【发布时间】:2011-02-22 20:44:53
【问题描述】:
我是 Web 开发的新手,并试图解决安全问题。我在http://guides.rubyonrails.org/security.html 上浏览了这篇文章,这些是作者提到的攻击者如何修复会话的一些步骤。
- 攻击者创建了一个有效的会话 ID:他将 Web 应用程序的登录页面加载到他想要修复会话的位置,并从响应中获取 cookie 中的会话 ID(参见图像中的数字 1 和 2)。
- 他可能会维持会话。过期会话,例如每 20 分钟一次,大大缩短了攻击的时间范围。因此,他会不时访问 Web 应用程序以保持会话处于活动状态。
- 现在,攻击者将强制用户的浏览器使用此会话 ID(请参见图中的数字 3)。由于您可能无法更改另一个域的 cookie(因为同源策略),攻击者必须从目标 Web 应用程序的域运行 JavaScript。通过 XSS 将 JavaScript 代码注入应用程序即可完成这种攻击。这是一个示例:
- 攻击者使用 JavaScript 代码将受害者引诱到受感染的页面。通过查看页面,受害者的浏览器会将会话 ID 更改为陷阱会话 ID。
- 由于未使用新的陷阱会话,Web 应用程序将要求用户进行身份验证。
- 从现在开始,受害者和攻击者将通过同一个会话共同使用 Web 应用程序:会话变得有效,而受害者没有注意到攻击。
我不明白几点。
- 既然会话是通过发送的,为什么在第 5 步让用户登录?
- 我在 wiki 上看到了可能的解决方案,例如用户属性检查等。为什么我们不能在步骤5中输入用户名和密码时为登录的用户重置会话?
【问题讨论】:
标签: ruby-on-rails