Python 3.x 是否有任何方法可以提高我的网站安全性?

Python 3.x 是否有任何方法可以提高我的网站安全性?,python-3.x,security,heroku,flask,host,Python 3.x,Security,Heroku,Flask,Host,我目前正在建立一个网站的生产使用。 不过,我确实有一些安全顾虑。 如有任何意见或建议,将不胜感激 以下是我迄今为止所做的: 我的web应用程序是基于Python的 Heroku是我的主机(支持https) AWS RDS是我的后端数据库 因为Heroku使用动态IP,所以我必须为AWS RDS打开IP限制。但是,我为数据库强制了SSL连接 在我的代码中,所有敏感参数都存储为配置变量。 我使用os.environ()调用它们 此外,所有HTTP请求都必须提供我提供给客户的令牌 下面的代码显示了我对

我目前正在建立一个网站的生产使用。 不过,我确实有一些安全顾虑。 如有任何意见或建议,将不胜感激

以下是我迄今为止所做的:

  • 我的web应用程序是基于Python的
  • Heroku是我的主机(支持https)
  • AWS RDS是我的后端数据库
  • 因为Heroku使用动态IP,所以我必须为AWS RDS打开IP限制。但是,我为数据库强制了SSL连接
  • 在我的代码中,所有敏感参数都存储为配置变量。 我使用os.environ()调用它们
  • 此外,所有HTTP请求都必须提供我提供给客户的令牌
  • 下面的代码显示了我对令牌身份验证所做的操作。 但我相信有更好的方法来实现它

    if request.method==“POST”:
    token=请求.头文件['Authorization']
    令牌密钥='token token=“%s”'%(用户令牌)
    如果令牌!=令牌密钥:
    中止(400)
    打印('authentication failed!',request.json)
    其他:
    

    同样,如果有人能给我提供任何建议,或就我构建应用程序所用的方法向我提供一个简短的风险评估,我将不胜感激。

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

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

    另一件事是您的令牌验证。现在还不清楚这些
    用户令牌是从哪里获得的,但我敢打赌你会将它们“按原样”存储在数据库中,这也不理想。您可能需要考虑存储哈希,并在请求上比较哈希。

    最后一件事——如果您有对服务器的SSH访问权,最好将您自己的IP列入白名单以访问它,并阻止所有其他IP


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

    谢谢你,米哈伊尔,我也一直在担心打开DB的IP。我听说MySQL SSL连接非常弱。所以,我一定会试试Heroku的Postgres DB。除了Heroku的配置变量外,令牌不会存储在任何地方。安全吗?我没有打开任何SSH访问,所以这部分应该可以。