我正在使用 flask、Werkzeug 和 jinja2 开发网络应用程序。我对这些术语非常困惑,想知道这些术语的含义以及它们与 CGI 环境变量的相互关系。什么是全局变量g以及它与应用程序上下文和请求上下文的关系。
此外,由于我对开发网络应用程序了解不多(我是第一次这样做)任何其他语言,所以如果有人可以提供引用或让我了解请求的处理方式,还有另一个请求,我的意思是当请求到达网络应用程序时会发生什么。
此外,如果我不使用任何 openID 提供商来让用户登录我的网站,我该如何确保密码安全。我应该为此使用任何框架吗?
最佳答案
为了更好地了解请求上下文,请查看下一个问题:What is the purpose of Flask's context stacks? .最好花一点时间来理解它,因为它是基本的框架原则。
许多用户数据存储方法都是安全的,最简单的将用户和密码存储在数据库中,作为 modern_crypto_hash(password + salt)
限制接受短密码,并使用一些东西作为 进行日志记录Flask-Login
或 Flask-Principal
。为避免 SQL 注入(inject),您可以使用任何 ORM,例如 SqlAlchemy
。为了避免 XSS 通过 POST 发送数据更改并添加 csrf
token ,WTForms
在那里很好。为了避免 html 标签注入(inject),默认情况下已经使用内置模板系统,并且不要不安全地将用户内容插入页面。也可以使用 https
。
关于python - Flask 和 WerkZeug 中的应用程序上下文和请求上下文是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917472/