2
我是网络开发新手,并试图抓住安全问题。我阅读了http://guides.rubyonrails.org/security.html这篇文章,这些是作者提到的攻击者如何修复会话的一些步骤。会话固定
- 攻击者创建了一个有效的会话ID:他就装在那里,他要解决该会话的Web应用程序的登录页面,并采取会话ID从响应中的Cookie(见1号和2图片)。
- 他可能维护会话。即将到期的会话,例如每20分钟一次,大大缩短了攻击的时间范围。因此他不时访问Web应用程序以保持会话的活跃。
- 现在,攻击者将强制用户的浏览器到使用这个会话ID(在影像中看到3号)。由于您不能更改另一个域的Cookie(因为具有相同的源策略),因此攻击者必须从目标Web应用程序的域中运行JavaScript。 XSS将JavaScript代码注入应用程序可以完成这种攻击。下面是一个例子:<脚本>的document.cookie = “_ SESSION_ID = 16d5b78abb28e3d6206b60f22a03c8d9”; </script >。稍后阅读有关XSS和注射的更多信息。
- 攻击者利用JavaScript代码将受害者引诱至受感染页面。通过查看该页面,受害者的浏览器将会话ID更改为陷阱会话ID。
- 由于新的陷阱会话未使用,Web应用程序将要求用户进行身份验证。
- 从现在起,受害者和攻击者将共同使用具有同一会话的Web应用程序:会话成为有效和受害者没有注意到的攻击。
我不明白两点。
- 为什么用户在第5步登录,因为会话是通过发送?
- 我看到了wiki上的可能解决方案,如用户属性检查等。为什么我们不能在步骤5中为用户输入用户名和密码时重置会话?