【问题标题】:How secure are ASP.net security cookiesASP.net 安全 cookie 的安全性如何
【发布时间】:2013-01-19 16:04:33
【问题描述】:

我的理解是 ASP 会生成一个 cookie 来验证会话。但是,如果该 cookie 通过非 https 通道来回发送,我不能简单地通过欺骗 cookie 来欺骗它吗? cookie 可以锁定到特定的 IP 或其他机器指纹吗?

【问题讨论】:

  • 如果cookie与其他参数锁定在一起,那么所有参数必须一起前后移动。因此,如果有人可以读取 cookie 可以读取,其余参数也可以读取。

标签: asp.net security cookies


【解决方案1】:

在我的上一份工作中,我们通过在数据库中跟踪用户的会话 ID(我们将 guid 作为查询字符串附加到 URL,还有其他方法)来解决这个问题,我们还将在其中存储发出请求的 IP 地址.对于所有后续请求(具有会话 ID 的任何请求,获取任何敏感信息的要求),我们只需检查会话 ID 和发出请求的 ip 与我们验证和设置会话时存储的值。 Request.UserHostAddress 有点难以欺骗。有一些开销,但它比 cookie 更安全。

【讨论】:

  • 只是好奇 - 如果此检查失败,您是否有警报机制?如果有,是否曾经在生产中发生过?
  • 我们所有的应用程序都有某种日志记录。我不记得它发生过,但是,在我们做出改变之前,它在生产中很猖獗。我们的问题不是黑客,而是网址共享者。公司员工会向代理发送链接,却没有意识到该链接及其会话 ID 提供了对数据的访问权限。他们会选择一个代理作为示例,并将该代理的数据公开给与他们共享链接的每个人。这种机制关闭了这种做法。他们只会被拒绝访问,如果我没记错的话,他们会被重定向到登录页面。
  • 非常有趣,谢谢。我实现了与入侵断路器非常相似的东西,并且在 4 年内它从未触发过一次。
【解决方案2】:

ASP.NET 中的会话没有经过身份验证 - 身份验证是完全独立的。通过获取会话 cookie 并重新创建它,是的,您可以劫持会话,如果您解除身份验证 cookie,那么您可以作为用户进行身份验证(这就是默认情况下身份验证 cookie 过期的原因) - 请参阅 http://msdn.microsoft.com/en-us/library/ms178581.aspx

安全说明很清楚;

SessionID 值以明文形式发送,无论是作为 cookie 还是作为 URL 的一部分。恶意用户可以访问 另一个用户通过获取 SessionID 值并将其包含在 对服务器的请求。如果您将敏感信息存储在 会话状态,建议您使用 SSL 加密任何 浏览器和服务器之间的通信,包括 SessionID 值。

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 1970-01-01
    • 2016-06-07
    • 2014-03-22
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多