python-如果金字塔会话是单向散列的,而不是存储在服务器端,则数
使用SignedCookieSessionFactory时,文档指出已使用sha512 HMAC摘要算法.结果,一旦会话数据被序列化,就将其签名并在会话cookie下发送给用户的客户端. Pyramid的文档中没有提到会话也在服务器端缓存(在此SessionFactory下). 当与SessionAuthenticationPolicy配对时,这会带来矛盾并导致身份验证混乱.如果无法从客户端的会话cookie中检索会话数据(因为它是单向散列的),那么怎么可能做到以下几点? >使用应用程序进行身份验证,以使读取Request.authenticated_userid不会返回None. 我了解,仅删除Cookie客户端不足以完全使会话无效(不列入黑名单),但这会带来以下问题: >除非以某种方式记住用户最近发出的每个会话cookie并将其列入黑名单/使它们无效,否则如何在浏览器范围的会话中保持安全? 最终,我想答案是这样的: 任何解释将不胜感激. 最佳答案
Cookie包含所有数据.会话内容本身与该内容的hmac签名一起存储在cookie中.这意味着,如果客户端努力尝试,便可以查看内容,但是由于没有服务器端机密就无法创建可信签名,因此客户端无法更改内容.
这取决于您将会话用于什么目的-在将数据放入会话对象之前,您需要考虑这些问题.
除非您在会话中存储某种ID,然后在服务器端黑名单ID表中存储它们,否则不会这样.如果执行此操作,则可以编写自己的包装器会话工厂,以打开该会话,检查ID并返回空白(如果已将其列入黑名单).当然,那么您可能只想使用服务器端会话库(例如pyramid_redis_sessions或pyramid_beaker)及其服务器端存储后端之一. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |