揭秘烧瓶app.secret_key

如果未设置app.secret_key ,则Flask框架将不允许您设置或访问会话字典。 这是烧瓶用户指南在这个主题上所要说的。

我对networking开发很陌生,我不知道如何/为什么有什么安全措施。 我想了解一下烧瓶正在做什么。 为什么烧瓶迫使我们设置这个secret_key属性? 烧瓶如何使用secret_key属性?

任何需要encryption的东西(为了防止攻击者的篡改)需要设置密钥。 对于Flask本身,这个“任何”都是Session对象,但是其他的扩展可以使用相同的秘密。

secret_key只是为SECRET_KEYconfiguration键设置的值,或者您可以直接设置它。

快速入门中的会话部分对于应该设置什么样的服务器端秘密提供了很好的理解build议。

encryption依赖于秘密; 如果你没有设置服务器端的encryption秘密使用,每个人都可以打破你的encryption; 这就像你的电脑的密码。 秘密加数据签名用于创build签名string,使用encryption哈希algorithm难以重新创build值; 只有当你有完全相同的秘密原始数据,你可以重新创build这个值,让Flask检测是否有任何未经许可的改变。 由于Flask发送给客户端的数据永远不会包含秘密,因此客户端不能篡改会话数据,并希望产生新的有效签名。

烧瓶使用它的itsdangerous图书馆做所有辛苦工作; 会话使用带定制JSON序列化程序的itsdangerous.URLSafeTimedSerializer类 。