如 app.secret_key
未设置,Flask 将不允许您设置或访问 session 字典。
这就是flask user guide has to say在这个问题上。
我对 Web 开发很陌生,我不知道任何安全性的东西是如何/为什么工作的。我想了解 Flask 在幕后做了什么。
secret_key
属性(property)? secret_key
属性(property)? 最佳答案
任何需要加密(为了防止被攻击者篡改)的东西都需要设置 key 。对于 Flask 本身来说,“任何东西”就是 Session
对象,但其他扩展可以使用相同的 secret 。secret_key
只是为 SECRET_KEY
设置的值配置键,也可以直接设置。
Sessions section in the Quickstart关于您应该设置什么样的服务器端 secret ,有很好的、理智的建议。
加密依赖于 secret ;如果您没有为要使用的加密设置服务器端 secret ,那么每个人都可以破解您的加密;它就像你电脑的密码。 secret 加上要签名的数据用于创建签名字符串,这是一个难以使用 cryptographic hashing algorithm 重新创建的值。 ;只有当你拥有完全相同的 secret 和原始数据时,你才能重新创建这个值,让 Flask 检测是否有任何未经许可的更改。由于 Flask 发送给客户端的数据中永远不会包含 secret ,因此客户端无法篡改 session 数据并希望生成新的有效签名。
Flask 使用 itsdangerous
library做所有艰苦的工作; session 使用 itsdangerous.URLSafeTimedSerializer
class使用自定义的 JSON 序列化程序。
关于python - 揭秘 Flask app.secret_key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22463939/