Flask 如何从会话 cookie 中取回值?

jth*_*tht 3 python cookies hash flask

我正在查看通过烧瓶中的会话对象设置的 cookie,它只是一个散列(或者看起来只是一个散列)。我为 cookie 设置的值无处可寻,但 Flask 可以取回该值。

我认为您必须将值与哈希值一起存储在 cookie 中(然后在您的应用程序中有一个 SECRET 以与哈希值混合),否则我不知道如何取回您的值。

我想也许他们会散列秘密和值,然后对其进行编码以进行额外的混淆或类似的事情。

Mar*_*ers 5

cookie 值包含压缩和序列化数据

Flask 对 cookie 中存储的数据执行此操作:

  • Python 数据使用(自定义形式的)JSON 进行序列化。
  • 序列化经过加密签名以确保完整性
  • 签名加序列化被压缩(除非压缩数据会大于未压缩版本)和 base64 编码。

在读取 cookie Flask 时,只需:

  • 解压数据
  • 重新计算签名并根据包含的签名对其进行验证
  • 将序列化数据加载回 Python 对象。

其中大部分由itsdangerous. JSON 编码和解码由Flasksession模块处理。

直到最近,它pickle才被用来进行序列化,但如果服务器端的秘密被盗,就会存在安全风险。请参阅更好的客户端会话