Python 如果金字塔会话是单向散列的,而不是存储在服务器端,那么数据来自哪里?
使用Python 如果金字塔会话是单向散列的,而不是存储在服务器端,那么数据来自哪里?,python,python-3.x,pyramid,Python,Python 3.x,Pyramid,使用SignedCookiesSessionFactory时,文档说明使用了sha512 HMAC摘要算法。因此,一旦序列化了会话数据,就会在会话cookie下对其进行签名并发送到用户的客户端 在Pyramid的文档中没有提到会话也缓存在服务器端(在此SessionFactory下) 这就产生了矛盾,并且在与SessionAuthenticationPolicy配对时也导致了身份验证混乱。如果无法从客户端的会话cookie中检索会话数据(因为它是单向散列的),那么如何能够实现以下操作 向应用程序
SignedCookiesSessionFactory
时,文档说明使用了sha512 HMAC摘要算法。因此,一旦序列化了会话数据,就会在会话
cookie下对其进行签名并发送到用户的客户端
在Pyramid的文档中没有提到会话也缓存在服务器端(在此SessionFactory下)
这就产生了矛盾,并且在与SessionAuthenticationPolicy
配对时也导致了身份验证混乱。如果无法从客户端的会话
cookie中检索会话数据(因为它是单向散列的),那么如何能够实现以下操作
请求。authenticated_userid
不会返回None会话
cookie复制到剪贴板forget(request)
中的标题将在响应中返回会话
cookie替换为复制的值- 除非用户最近发布的每个会话cookie都以某种方式被记住并被列入黑名单/无效,否则如何保持浏览器范围会话的安全性
cookie实际上是用于在内存中查找会话的密钥/会话ID吗?因为它是单向签署的,这肯定是唯一的解释吗会话
- 那么,是否有可能在服务器端使会话无效,这比仅使用
模式要健壮一些headers=forget(request)
金字塔\u redis\u会话
”
任何解释都将不胜感激。cookie包含所有数据。会话内容本身与该内容的hmac签名一起存储在cookie中。这意味着,如果客户机足够努力,他们可能会查看内容,但他们无法更改内容,因为如果没有服务器端机密,他们无法创建受信任的签名 除非用户最近发布的每个会话cookie都以某种方式被记住并被列入黑名单/无效,否则如何保持浏览器范围会话的安全性 这取决于您使用会话的目的-在将数据放入会话对象之前,您需要考虑这些问题 那么,是否有可能在服务器端使会话无效,这比headers=forget(request)模式更健壮一些 除非您在会话中存储某种id,然后在服务器端存储黑名单id表。如果您这样做了,那么您可以编写自己的包装器会话工厂来打开会话,检查id,如果它被列入黑名单,则返回一个空的。当然,您可能只想使用服务器端会话库,如pyramid_redis_sessions或pyramid_Bicker及其服务器端存储后端