这篇博客文章描述了一种预防会话固定攻击的方法(特别是ASP.Net )。其思想是会话id应该以可验证的方式绑定到用户的身份,这意味着给定的会话id对攻击者和受害者都无效。其建筑用途:
select random nonce
session_id = nonce || MAC(nonce || username).对于运行在集群上的应用程序来说,分发或更改MAC密钥可能不方便。如果MAC被未键散列替换,会丢失什么?
select random nonce
session_id = nonce || Hash(nonce || username).这确实意味着攻击者可以生成对给定身份有效的会话id,但仍然不能同时接受攻击者和受害者的会话id。这种方法有缺点吗?
发布于 2016-07-23 17:21:06
Q1 -防止会话固定- MAC还是Hash?
Q2 -如果MAC被未键散列替换,会丢失什么?
Q3 -这种方法是否有一个弱点(用散列代替MAC )?
您通过跨多个服务器使用MAC来识别密钥管理的缺点,而对于未键散列,唯一的缺点是由于散列函数的公共性质增加了会话伪造的风险。因此,就更安全的选项而言,MAC选项更适合于防止伪造会话。然而,正如您所指出的,在这两种情况下,会话固定仍然可以发生。我看到的加强会话id的其他方法是调整会话到期,并将用户代理作为MAC函数的输入。我认为Q1、Q2和Q3部分地断言或假设在会话id创建中使用MAC是防止会话固定的“解决方案”。我认为,重要的是要注意到一套全面的策略,以防止会议固定。然而,在ASP.Net环境中,一个非常重要的问题是不能在用户之后重用旧的会话ids,这是会话固定利用的一个巨大漏洞。
https://security.stackexchange.com/questions/80791
复制相似问题