python-如果金字塔会话是单向散列的,而不是存储在服务器端,则数据来自哪里?

python-如果金字塔会话是单向散列的,而不是存储在服务器端,则数据来自哪里?,第1张

概述使用SignedCookieSessionFactory时,文档指出已使用sha512 HMAC摘要算法.结果,一旦会话数据被序列化,就将其签名并在会话cookie下发送给用户的客户端.Pyramid的文档中没有提到会话也在服务器端缓存(在此SessionFactory下).当与SessionAuthenticationPolicy配对时,这会带来矛盾并导致

使用Signed@R_404_5556@SessionFactory时,文档指出已使用sha512 HMAC摘要算法.结果,一旦会话数据被序列化,就将其签名并在会话@R_404_5556@下发送给用户的客户端.

PyramID的文档中没有提到会话也在服务器端缓存(在此SessionFactory下).

当与SessionAuthenticationPolicy配对时,这会带来矛盾并导致身份验证混乱.如果无法从客户端的会话@R_404_5556@中检索会话数据(因为它是单向散列的),那么怎么可能做到以下几点?

>使用应用程序进行身份验证,以使读取Request.authenticated_userID不会返回None.
>将会话@R_404_5556@复制到剪贴板.
>通过访问一个视图注销,从而将来自forget(request)的标头返回到响应中.
>用复制的值替换会话@R_404_5556@.
>用户现在重新登录.

我了解,仅删除@R_404_5556@客户端不足以完全使会话无效(不列入黑名单),但这会带来以下问题:

>除非以某种方式记住用户最近发出的每个会话@R_404_5556@并将其列入黑名单/使它们无效,否则如何在浏览器范围的会话中保持安全?
>会话@R_404_5556@实际上是否是用于在内存中查找会话的密钥/会话ID?因为它是单向签名,所以肯定是唯一的解释吗?
>那么是否有可能使服务器端的会话无效,而不仅仅是headers = forget(request)模式更强大?

最终,我想答案是这样的:
“使用诸如pyramID_redis_sessions之类的包含项来维护服务器端会话”

任何解释将不胜感激.

最佳答案@R_404_5556@包含所有数据.会话内容本身与该内容的hmac签名一起存储在@R_404_5556@中.这意味着,如果客户端努力尝试,便可以查看内容,但是由于没有服务器端机密就无法创建可信签名,因此客户端无法更改内容.

How is it possible to remain secure with browser-scoped sessions unless every session @R_404_5556@ the user has recently been issued is somehow remembered and blackListed/invalIDated?

这取决于您将会话用于什么目的-在将数据放入会话对象之前,您需要考虑这些问题.

Is it possible then to invalIDate sessions server-sIDe,a little more robust than just the headers=forget(request) pattern?

除非您在会话中存储某种ID,然后在服务器端黑名单ID表中存储它们,否则不会这样.如果执行此 *** 作,则可以编写自己的包装器会话工厂,以打开该会话,检查ID并返回空白(如果已将其列入黑名单).当然,那么您可能只想使用服务器端会话库(例如pyramID_redis_sessions或pyramID_beaker)及其服务器端存储后端之一. 总结

以上是内存溢出为你收集整理的python-如果金字塔会话是单向散列的,而不是存储在服务器端,则数据来自哪里? 全部内容,希望文章能够帮你解决python-如果金字塔会话是单向散列的,而不是存储在服务器端,则数据来自哪里? 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存