为什么Yesod会话cookie不能被劫持?

Jyo*_*rya 21 security yesod

耶索德书

加密防止用户检查数据,签名确保会话既不会被劫持也不会被篡改.

我不清楚为什么会这样.如果窃听者在从服务器发送cookie并在合法用户发出另一个请求之前使用它时获取cookie,那么会话最终是否会被劫持?

在我看来,真正防止会话劫持的唯一方法是始终使用SSL.但是如果我这样做那么Yesod的签名和加密最终会成为不必要的开销(EDIT:防止劫持的开销.正如@sr_在评论中指出的那样,它仍然有用).

Mic*_*man 24

这是一个很好的捕获.当我们在cookie中包含客户端的IP地址以防止劫持时,这曾经更准确.结合防篡改保护,这使得MITM攻击基本上不可能工作,除非您在相同的路由器后面使用NAT或使用相同的代理.

不幸的是,由于担心代理问题,我们不得不禁用该保护.由于中间代理服务器,单个用户的请求可能来自多个IP地址.我没有数据来说明这种情况发生的频率,但是有足够的担心这个安全功能导致我们禁用它的破坏.

谢谢你提出这个问题,我已经纠正了这本书.

  • 很高兴,像这个问题的反馈使整个系统更好! (3认同)
  • 只需注意 - 即使对于仅限SSL的站点,您的yesod会话仍然容易受到劫持,除非您a)使用customizeSessionCookies在会话cookie上设置安全位或b)在响应上设置Strict-Transport-Security标头.最好是两者.如果没有这些措施中的至少一个,我相信攻击者可以冒充您的网站并拦截任何尝试通过http访问该网站的用户发送的会话Cookie(而不是https) (3认同)