Flask和WerkZeug中的应用上下文和请求上下文是什么?

6 投票
1 回答
3229 浏览
提问于 2025-04-18 01:44

我正在用Flask、Werkzeug和Jinja2开发一个网页应用,但对这些术语感到很困惑,想了解它们的意思,以及它们和CGI环境变量之间的关系。比如,什么是全局变量g,它和应用上下文、请求上下文有什么关系。

另外,由于我对开发网页应用的知识不多(这是我第一次做),也不太懂其他语言,所以我希望有人能给我一些参考,或者帮我理解请求是如何处理的。也就是说,当一个请求到达网页应用时,会发生什么。

还有,如果我不使用任何OpenID提供商来让用户登录我的网站,我该如何确保密码的安全性?我需要使用什么框架吗?

1 个回答

2

关于请求上下文,建议你看看下一个问题:Flask的上下文栈有什么用?。花点时间理解这个内容是很有必要的,因为这是框架的基本原理。

存储用户数据的方法有很多,比较安全的方式是把用户信息存到数据库里,密码可以用 modern_crypto_hash(password + salt) 这种方式来处理,这样可以限制短密码的使用。同时,可以使用一些库来处理登录,比如 Flask-LoginFlask-Principal。为了避免SQL注入,你可以使用任何ORM工具,比如 SqlAlchemy。为了防止XSS攻击,建议通过POST方式发送数据,并添加 csrf 令牌,WTForms 在这方面很有帮助。为了避免HTML标签注入,最好使用默认的内置模板系统,并且不要不安全地将用户内容直接插入到页面中。此外,使用 https 也是很有用的。

撰写回答