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