繁体   English   中英

会话固定

[英]session fixation

我是Web开发的新手,并试图控制安全问题。 我在http://guides.rubyonrails.org/security.html上浏览了这篇文章,这些是作者提到的攻击者如何修复会话的一些步骤。

  1. 攻击者创建一个有效的会话ID:他将Web应用程序的登录页面加载到他要修复该会话的位置,并从响应中获取cookie中的会话ID(请参见图中的数字1和2)。
  2. 他可能会维持会议。 会话期满(例如,每20分钟一次)大大缩短了攻击时间。 因此,他会不时访问Web应用程序,以使会话保持活动状态。
  3. 现在,攻击者将迫使用户的浏览器使用此会话ID(请参阅图中的数字3)。 由于您可能不会更改另一个域的Cookie(由于相同的原始策略),因此攻击者必须从目标Web应用程序的域中运行JavaScript。 通过XSS将JavaScript代码注入应用程序即可完成此攻击。 这是一个示例:<script> document.cookie =“ _ session_id = 16d5b78abb28e3d6206b60f22a03c8d9”; </ SCRIPT>。 稍后再阅读有关XSS和注入的更多信息。
  4. 攻击者使用JavaScript代码诱使受害者进入受感染的页面。 通过查看页面,受害者的浏览器会将会话ID更改为陷阱会话ID。
  5. 由于没有使用新的陷阱会话,因此Web应用程序将要求用户进行身份验证。
  6. 从现在开始,受害者和攻击者将在同一会话中共同使用该Web应用程序:该会话变为有效,受害者没有注意到攻击。

我不明白几点。

  1. 由于会话是通过发送的,为什么要使用户在步骤5中登录?
  2. 我在Wiki上看到了可能的解决方案,例如用户属性检查和其他。 当他们在步骤5中输入用户名和密码时,为什么我们不能为登录用户重置会话?

1)攻击者在步骤1&2中收到尚未登录的会话。 这是陷阱会话。 在第5步,受害者登录认为会话ID是新的(和“秘密”)。 当受害者登录时,攻击者可以重新使用“秘密”会话ID,并且也可以有效登录。

因此,请回答您的问题:因为陷阱会话尚未登录,所以诱使受害者登录,以诱骗受害者使用此会话ID登录。

2)在解释了会话固定的步骤之后,第一个对策(第2.8节)是创建一个新的会话,并在登录后放弃旧的会话。这确实是您的主意!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM