2010-05-23 42 views
2

我是网络开发新手,并试图抓住安全问题。我阅读了http://guides.rubyonrails.org/security.html这篇文章,这些是作者提到的攻击者如何修复会话的一些步骤。会话固定

  1. 攻击者创建了一个有效的会话ID:他就装在那里,他要解决该会话的Web应用程序的登录页面,并采取会话ID从响应中的Cookie(见1号和2图片)。
  2. 他可能维护会话。即将到期的会话,例如每20分钟一次,大大缩短了攻击的时间范围。因此他不时访问Web应用程序以保持会话的活跃。
  3. 现在,攻击者将强制用户的浏览器到使用这个会话ID(在影像中看到3号)。由于您不能更改另一个域的Cookie(因为具有相同的源策略),因此攻击者必须从目标Web应用程序的域中运行JavaScript。 XSS将JavaScript代码注入应用程序可以完成这种攻击。下面是一个例子:<脚本>的document.cookie = “_ SESSION_ID = 16d5b78abb28e3d6206b60f22a03c8d9”; </script >。稍后阅读有关XSS和注射的更多信息。
  4. 攻击者利用JavaScript代码将受害者引诱至受感染页面。通过查看该页面,受害者的浏览器将会话ID更改为陷阱会话ID。
  5. 由于新的陷阱会话未使用,Web应用程序将要求用户进行身份验证。
  6. 从现在起,受害者和攻击者将共同使用具有同一会话的Web应用程序:会话成为有效和受害者没有注意到的攻击。

我不明白两点。

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

回答

1

1)攻击者在步骤1 & 2中收到尚未登录的会话。这是陷阱会议。在步骤5中,受害者登录时认为会话标识是新的(并且是“秘密”)。在受害者登录的时刻,攻击者能够重新使用“秘密”会话ID并有效登录。

因此,要回答你的问题:被害人是由登录因为陷阱会话还没有登录,以诱骗受害者使用这个会话ID登录。

2)解释会话固定的步骤之后,第一个对策(2.8节)是创建一个新的会话,并抛弃旧的在登录后,你的想法是究竟是什么!