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

how does flask get the value back from session cookies?

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

我认为你必须将值与哈希一起存储在 cookie 中(然后在你的应用程序中有一个秘密与哈希值混合),否则我不知道你如何得到你的价值回归。

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

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

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

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

读取 cookie Flask 只需:

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

大部分由 itsdangerous. The JSON encoding and decoding is handled by the Flask session module 处理。

直到最近,pickle 才用于序列化,但如果服务器端机密被盗,则存在安全风险。参见 Better Client-side sessions