如果app.secret_key未设置,Flask 将不允许您设置或访问会话字典。
app.secret_key
这就是烧瓶用户指南关于该主题的全部内容。
我对 Web 开发非常陌生,我不知道任何安全性东西是如何/为什么起作用的。我想了解 Flask 在幕后做了什么。
secret_key
任何需要加密的东西(为了防止攻击者篡改)都需要设置密钥。对于Flask 本身,“任何东西”都是 对象Session,但其他扩展可以使用相同的秘密。
Session
secret_key只是为SECRET_KEY配置键设置的值,也可以直接设置。
SECRET_KEY
快速入门中的会话部分对您应该设置什么样的服务器端密码有很好的、理智的建议。
加密依赖于秘密;如果您没有为加密设置服务器端机密,那么每个人都可以破解您的加密;这就像您计算机的密码。秘密加上要签名的数据用于创建签名字符串,这是使用加密散列算法难以重新创建的值;只有当你有完全相同的秘密 和 原始数据时,你才能重新创建这个值,让 Flask 检测是否有任何内容未经许可被更改。由于秘密永远不会包含在 Flask 发送给客户端的数据中,因此客户端无法篡改会话数据并希望生成新的有效签名。
Flask 使用itsdangerous库来完成所有艰苦的工作;会话使用带有自定义 JSON 序列化程序的itsdangerous.URLSafeTimedSerializer类。
itsdangerous
itsdangerous.URLSafeTimedSerializer