【问题标题】:Form authentication session cookie hijacking when https is used [closed]使用 https 时表单身份验证会话 cookie 劫持 [关闭]
【发布时间】:2014-05-19 16:25:11
【问题描述】:

更新

我有一个 ASP.NET 网站,它始终对所有页面使用 SSL。

我的问题是,是否有可能(实际上)有人执行表单身份验证会话 cookie 劫持,其中表单 cookie id 被泄露,目标用户的会话被使用泄露的 cookie id 劫持。

【问题讨论】:

  • 黑客很模糊。什么样的攻击?你的意思是在网络上还是在客户端或服务器上?话虽如此,长话短说,别担心。 HTTPS 和表单身份验证对于几乎所有事情来说都足够安全。
  • 您所说的(我希望)是会话劫持,即有人嗅探网络数据包以检索会话数据。 SSL,如果设置正确,可以防止这种情况。此外,表单身份验证 cookie 使用机器密钥加密,从而提供更高的安全性。
  • 这是一个很好的问题,但您应该在security.stackexchange.com 上提问,信息安全专家可以更好地回答这个问题。这个问题与编程或 ASP.NET 无关。
  • @Liam 很抱歉让您感到困惑。我的意思是表单身份验证 cookie 劫持,其中表单会话 cookie id 在使用 https 时被其他用户窃取(避免黑客混淆)。有没有可能。
  • @Heymega 受帖子限制,请参考以上评论。

标签: asp.net security forms-authentication


【解决方案1】:
  1. SSL 是关于加密;这不是为了防止访问通过网络传输的信息。换句话说,同一网络上的任何人都可以检查在您的服务器和客户端之间传输的每个数据包。 SSL 所做的唯一事情就是加密这些数据包中的数据,使其无法以纯文本形式查看。

  2. SSL 很棒,但它并非万无一失。除非您过去几个月一直生活在困境中,否则您无疑听说过 Heartbleed 漏洞。这特别令人讨厌因为它允许恶意用户获取 SSL 连接的加密密钥,然后能够解密发送的数据包。不过,即使在出现错误之前,发挥作用的机制也是一个重要的考虑因素。您的 SSL 流量仅与您的证书私钥一样安全。如果私钥被泄露,或者您允许它以某种方式泄漏,那么您实际上就没有安全性。

  3. Cookie 只是属于通过 SSL 连接加密的所有数据的更广泛类别的数据片段。它们的不同之处在于它们存储在客户端上,未加密。如果您允许通过非安全连接 (HTTP) 发送 cookie,则在这种情况下数据可能会泄漏。但是,如果您在 cookie 上设置 Secure 标志,那么(在支持的客户端中),只有在连接是 HTTPS 时才会将其发送回服务器。始终建议您将此标志与源自 HTTPS 的任何 cookie 一起发送。但是,重要的是要意识到 cookie 的弱点是并且永远都是客户端。如果客户端受到威胁,则存储的 cookie 中的任何数据也会受到威胁。但是,从不在 cookie 中发送任何敏感信息可以大大减轻这可能导致的灾难程度,例如用户名和密码之类的东西显然是个坏主意。

  4. Cookie 是域绑定的。这意味着不仅任何人都可以请求它们;它必须是最初设置 cookie 的域。那么,这会留下两点妥协:在服务器本身和客户端机器上。如果您的服务器受到威胁,暴露的 cookie 是您最不关心的问题。如果客户的机器受到威胁,那无论如何都超出了您的控制范围。这里最好的缓解因素是循环会话,正确地假设 cookie 中唯一的东西是会话 ID。换句话说,用户的会话应该在某个合理的时间内超时。仅此一项就使妥协变得更加困难,因为恶意用户必须在客户端的 cookie 新鲜时捕获它,否则被盗的数据无论如何都是无用的。

【讨论】:

  • 感谢您的评论。对困惑感到抱歉。我的问题是,是否有可能(实际上)有人执行表单身份验证会话 cookie 劫持,其中表单 cookie id 被泄露,并且目标用户的会话被使用泄露的 cookie id 劫持。
【解决方案2】:

是的,这在技术上是可行的,但通过适当的保护措施,发生这种情况的风险非常小。检查的重点是:

  • 实施 SSL
  • 使用已建立的框架或商业产品(ASP.NET 表单身份验证、SiteMinder 等)
  • 禁用身份验证 cookie 持久性(即“记住我”或“保存我的凭据”功能)
  • 启用 CSRF 检查(详情请查看 here)
  • 还有几个here。

Cookie 几乎是在浏览器中维护身份验证会话的行业标准。如果你不使用它们,你还不如放弃发布公共网站的想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2010-09-13
    • 2014-07-09
    • 2021-10-07
    • 2011-06-11
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多