2015-07-10 51 views
1

我正在通过烧瓶中的会话对象查看cookie集,它只是一个散列(或者它看起来像只是一个散列)。我为cookie设置的值无处可查,但烧瓶可能会返回值。烧瓶如何从会话cookie中获取价值?

我以为你必须将值存储在cookie旁边的散列(然后在你的应用程序中有一个SECRET与散列的值混合),否则我不知道你如何得到你的价值背部。

我想也许他们哈哈的秘密和价值,然后编码它额外的混淆或沿着这些线。

回答

2

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

烧瓶这样做是为了存储在cookie中的数据:

  • Python数据是使用JSON(的定制形式)序列化。
  • 序列化的加密签名以确保完整性
  • 签名加系列化被压缩(除非压缩数据将比未压缩的版本)和base64编码。

在读取cookie的瓶只需:

  • 解压缩数据
  • 重新计算签名和验证其对包括签名
  • 装入串行数据传回Python对象。

大部分情况由itsdangerous负责。 JSON编码和解码由Flask session module处理。

直到最近,pickle被用来进行序列化,但是如果服务器端的密钥被盗,那么它就存在安全风险。请参阅Better Client-side sessions