Ruby on rails 会话固定

Ruby on rails 会话固定,ruby-on-rails,Ruby On Rails,我对网络开发还不熟悉,并试图掌握安全问题。我浏览了这篇文章,这些是作者提到的攻击者如何修复会话的一些步骤 攻击者创建了一个有效的会话id:他加载web应用程序的登录页,并从响应中获取cookie中的会话id(请参见图中的数字1和2) 他可能会继续治疗。将会话过期(例如每20分钟一次),可以大大缩短攻击的时间范围。因此,他会不时访问web应用程序,以保持会话的活动性 现在,攻击者将强制用户浏览器使用此会话id(请参见图中的数字3)。由于您可能无法更改另一个域的cookie(由于同源策略),攻击者必

我对网络开发还不熟悉,并试图掌握安全问题。我浏览了这篇文章,这些是作者提到的攻击者如何修复会话的一些步骤

  • 攻击者创建了一个有效的会话id:他加载web应用程序的登录页,并从响应中获取cookie中的会话id(请参见图中的数字1和2)
  • 他可能会继续治疗。将会话过期(例如每20分钟一次),可以大大缩短攻击的时间范围。因此,他会不时访问web应用程序,以保持会话的活动性
  • 现在,攻击者将强制用户浏览器使用此会话id(请参见图中的数字3)。由于您可能无法更改另一个域的cookie(由于同源策略),攻击者必须从目标web应用程序的域运行JavaScript。通过XSS将JavaScript代码注入到应用程序中可以完成此攻击。下面是一个示例:document.cookie=“_session_id=16d5b78abb28e3d6206b60f22a03c8d9”。稍后阅读有关XSS和注入的更多信息
  • 攻击者使用JavaScript代码将受害者引诱到受感染的页面。通过查看页面,受害者浏览器将会话id更改为陷阱会话id
  • 由于新的陷阱会话未使用,web应用程序将要求用户进行身份验证
  • 从现在起,受害者和攻击者将在同一会话中共同使用web应用程序:会话变为有效,受害者没有注意到攻击
  • 有两点我不明白

  • 既然会话是通过发送的,为什么用户要在步骤5中登录
  • 我在wiki上看到了可能的解决方案,比如用户属性检查和其他。为什么我们不能在第5步输入用户名和密码时为登录的用户重置会话 1) 攻击者在步骤1和2中收到尚未登录的会话。这是陷阱会话。在步骤5,受害者登录时认为会话id是新的(和“秘密”)。在受害者登录时,攻击者能够重新使用“机密”会话id,并有效地登录

    因此,为了回答您的问题:之所以让受害者登录,是因为陷阱会话尚未登录,目的是欺骗受害者使用此会话id登录

    2) 在解释了会话固定的步骤之后,第一个应对措施(第2.8节)是创建一个新会话,并在登录后放弃旧会话。正是你的想法