一尘不染

解密Flask app.secret_key

flask

如果app.secret_key未设置,则Flask将不允许你设置或访问会话字典。

这是烧瓶使用者指南必须针对此主题说的所有内容。

我对Web开发非常陌生,我不知道任何/为什么安全性工作原理。我想了解Flask在幕后所做的事情。

  • 为什么Flask强迫我们设置此secret_key属性?
  • Flask如何使用该secret_keyproperty?

阅读 2418

收藏
2020-04-06

共1个答案

一尘不染

任何需要加密的内容(为了安全防范攻击者的篡改)都需要设置密钥。对于刚刚瓶本身,即“什么”是Session对象,但其他的扩展可以使用相同的秘密的。

secret_key仅仅是为SECRET_KEY配置密钥设置的值,或者你可以直接设置它。

快速入门中的 “ 会话”部分对应设置哪种服务器端机密提供了很好的建议。

加密取决于机密;如果你没有设置要使用的加密服务器端密码,那么每个人都可以破坏你的加密;就像你计算机的密码一样。秘密加上要签名的数据用于创建签名字符串,使用密码哈希算法很难重新创建值;仅当你具有完全相同的机密且原始数据时,你才能重新创建此值,让Flask检测是否未经许可对任何内容进行了更改。由于Flask永远不会将秘密包含在发送给客户端的数据中,因此客户端无法篡改会话数据,并希望产生新的有效签名。

Flask使用该itsdangerous库来完成所有艰苦的工作;会话使用带有自定义JSON序列化程序的itsdangerous.URLSafeTimedSerializer类。

2020-04-06