【问题标题】:Make flask server connection secure [duplicate]使烧瓶服务器连接安全[重复]
【发布时间】:2019-06-30 11:57:34
【问题描述】:

我正在通过 python 中的烧瓶创建一个普通的 HTTP 服务器。该程序应该在普通计算机上运行。然后,移动应用程序将访问此 Web 服务器,并交换一些关键数据。

现在的问题是,如何确保连接安全。 一段代码:

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET'])
def result():
    some_critical_data = request.form['data']
    return 'Some other critical data'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port='8071', debug=True)

【问题讨论】:

  • 试试这个链接,你可以通过 ssl 使用 nginx 使其安全:blog.miguelgrinberg.com/post/…
  • 使其安全是一个包含许多步骤的复杂过程。也许您只是想问如何使它使用 TLS。

标签: python security networking encryption flask


【解决方案1】:

OpenSSL很酷:

from flask import Flask, jsonify

from OpenSSL import SSL
context = SSL.Context(SSL. SSL.SSLv23_METHOD)
context.use_privatekey_file('server.key')
context.use_certificate_file('server.crt')

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET'])
def result():
    some_critical_data = request.form['data']
    return 'Some other critical data'


if __name__ == '__main__':  
     app.run(host='0.0.0.0', port='8071', debug=True, ssl_context=context)

【讨论】:

  • 那么,我如何创建这个密钥和证书?什么会阻止中间人将另一个公钥传递给客户端,接收并解密来自客户端的消息,使用来自服务器的公钥再次对其进行加密并将其发送到服务器?
  • 尝试点击此链接创建 X509 证书:stackoverflow.com/questions/27164354/…
  • 好吧,使用您的解决方案会引发以下错误AttributeError: module 'OpenSSL.SSL' has no attribute 'PROTOCOL_TLSv1_2'
  • 试试这个:SSL.SSLv23_METHOD
  • 您自己生成私钥并从证书颁发机构获取(签名的)公钥。中间人无法证明对您的域的控制,因此无法从 CA 获得证书。您可以从letsencrypt.org免费获得证书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多