Flask和WerkZeug中的应用上下文和请求上下文是什么?
我正在用Flask、Werkzeug和Jinja2开发一个网页应用,但对这些术语感到很困惑,想了解它们的意思,以及它们和CGI环境变量之间的关系。比如,什么是全局变量g,它和应用上下文、请求上下文有什么关系。
另外,由于我对开发网页应用的知识不多(这是我第一次做),也不太懂其他语言,所以我希望有人能给我一些参考,或者帮我理解请求是如何处理的。也就是说,当一个请求到达网页应用时,会发生什么。
还有,如果我不使用任何OpenID提供商来让用户登录我的网站,我该如何确保密码的安全性?我需要使用什么框架吗?
1 个回答
2
关于请求上下文,建议你看看下一个问题:Flask的上下文栈有什么用?。花点时间理解这个内容是很有必要的,因为这是框架的基本原理。
存储用户数据的方法有很多,比较安全的方式是把用户信息存到数据库里,密码可以用 modern_crypto_hash(password + salt)
这种方式来处理,这样可以限制短密码的使用。同时,可以使用一些库来处理登录,比如 Flask-Login
或 Flask-Principal
。为了避免SQL注入,你可以使用任何ORM工具,比如 SqlAlchemy
。为了防止XSS攻击,建议通过POST方式发送数据,并添加 csrf
令牌,WTForms
在这方面很有帮助。为了避免HTML标签注入,最好使用默认的内置模板系统,并且不要不安全地将用户内容直接插入到页面中。此外,使用 https
也是很有用的。