【问题标题】:Is there anyway to improve my flask website security?有什么办法可以提高我的烧瓶网站安全性吗?
【发布时间】:2020-01-17 14:20:02
【问题描述】:

我目前正在构建一个用于生产用途的网站。 但是,我确实有一些安全问题。 任何意见或建议将不胜感激!

这是我到目前为止所做的:

  1. 我的网络应用基于 Python Flask。
  2. Heroku 是我的主机(支持 https)。
  3. AWS RDS 是我的后端数据库。
  4. 因为 Heroku 使用动态 IP,我必须为 AWS RDS 开启 IP 限制。但是,我已为数据库强制实施 SSL 连接。
  5. 在我的代码中,所有敏感参数都存储为配置变量。 我使用 os.environ() 调用它们
  6. 此外,所有 HTTP 请求都必须提供我提供给客户的令牌。

以下代码显示了我为 Token 身份验证所做的工作。 但我相信有更好的方法来实现它。

if request.method == 'POST':
    token = request.headers['Authorization']
    token_key = 'Token token="%s"' %(user_token)
    if token != token_key:
        abort(400)
        print('authentication failed!',request.json)
    else:

再次,如果有人能给我任何建议,或者就我用于构建应用程序的方法提供简短的风险评估,我真的很感激。

【问题讨论】:

    标签: python-3.x security heroku flask host


    【解决方案1】:

    安全问题通常与实施的具体细节有关,而不是与您用于部署应用的平台有关。 Heroku 很好,但你的应用可能不行。

    首先,您是否考虑过使用 Heruku 的 Postgres 数据库?将数据库打开到互联网绝对不是一件好事。

    另一件事是您的令牌验证。目前尚不清楚您从哪里获得这些user_tokens,但我敢打赌您将它们“按原样”存储在数据库中,这也不理想。您可能想考虑存储哈希值,并根据请求比较哈希值。

    最后一件事 - 如果您可以通过 SSH 访问您的服务器,最好将您自己的 IP 列入白名单以访问它,并阻止所有其他人。

    这些只是常见的做法,并不能保证您的应用程序的安全性。只有好的审计才能做到。

    【讨论】:

    • 谢谢 Mikhail,我也一直担心打开 DB 的 IP。我听说 MySQL SSL 连接很弱。所以,我肯定会尝试 Heroku 的 Postgres DB。令牌不存储在任何地方,除了 Heroku 的配置变量。它安全吗?我没有打开任何 SSH 访问,所以那部分应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多