【问题标题】:How secure are Cookies when set by an ASP.NET web application?由 ASP.NET Web 应用程序设置的 Cookie 的安全性如何?
【发布时间】:2012-05-21 15:05:35
【问题描述】:

我想知道 cookie 的安全性以及它是否可以被设置它的应用程序以外的其他应用程序读取。

我想设置一个 cookie 来存储一些敏感数据供我的网站随时读取。

其他应用程序可以读取我的应用程序设置的 cookie 吗?如果是这样,我需要加密存储在 cookie 中的数据吗?

注意:我无权访问 SSL。

编辑:我要存储的信息是用户详细信息。我正在创建一个白标网站。根据特定 URL 的请求(例如 www.mysite.com/joebloggs),我希望将有关 Joe Bloggs 的用户数据存储在客户端计算机上。当客户端返回 www.mysite.com 时,我希望从 cookie 中读取 Joe Bloggs 上的数据,以便跟踪它。

【问题讨论】:

  • 这是为了认证吗?如果是这样,您可以使用FormsAuthenticationmsdn.microsoft.com/en-us/library/… 对其进行加密/解密
  • 就像您在英国一样 - 请记住,您需要获得用户的明确许可才能存储 cookie。
  • 你想防御什么?你怕谁?
  • @SLaks 你在说什么?!我只是想确保没有人可以访问用户数据。
  • @David:你具体想阻止谁?例如,如果您要防御有权访问客户端计算机的人,则根本不能使用 cookie。

标签: c# asp.net security cookies encryption


【解决方案1】:

在用户计算机上运行的任何代码(包括浏览器插件)始终可以读取和写入 cookie,对此您无能为力。 (加密除外)

任何嗅探网络的人都可以读取和写入(如果适用)非 HTTPS 网站的所有 cookie。

其他域上的 Web 应用程序无法读取或写入 cookie,除非在兄弟域的有限情况下(例如,x.cloudapp.nety.cloudapp.net)(请参阅 cookie 抛掷)

【讨论】:

  • 所以你是说我必须加密我希望存储在 cookie 中的任何数据?
  • @David:你怕什么/怕谁?
  • 没有。正如 SLaks 所暗示的,这完全取决于您存储的数据。作为一般经验法则,您永远不应该在客户端存储非常重要的完整数据,因为您无法控制它。
  • 我对原始帖子进行了一些编辑,以便您可以看到我想要做什么。
【解决方案2】:

如果您可以避免在 cookie 中包含敏感数据,那将是最好的。由于正如在另一个答案中所说,用户计算机上的任何内容都可能受到损害。

但是,如果确实需要,您应该始终对数据进行加密。表单身份验证 cookie 的默认加密是通过 DPAPI 进行的,它使用运行 Web 应用程序的用户上下文和机器密钥,因此它不适合负载平衡环境。

在这种情况下,您应该通过数字证书(例如 RSA)进行加密。

对于您自己管理的 cookie,您必须使用 Crypto API,或者一些包装器或实用程序类,例如 this one。 对于表单身份验证 cookie,有 protection 设置,可让您配置加密机制。

【讨论】:

    【解决方案3】:

    如果您对使用 SSL 的安全性不够关注,那么一个简单且相对直接的选择是为用户生成一个新的 Guid,将该 Guid 存储在您的数据库中,然后将该 Guid 写入 cookie。

    我绝对不会用它来保护信用卡或银行业务或任何高度敏感的东西,但如果您需要保护此类数据,那么 SSL 是最低要求。

    归根结底,可以在没有 SSL 的情况下嗅探流量,因此任何通过网络发送的 cookie 都可能被具有恶意意图的人嗅探,如果该 cookie 用于识别您系统上的用户,那么他们可以很容易地冒充该用户。使用 Guid 的好处是,如果有人确实找到了 1 个人的 cookie,他们将无法猜测模式来找出其他人的 cookie,因此虽然 1 个人可能会受到损害,但至少您的整个用户群不会!

    可能一种合理的方法是生成一个 guid 和一个到期日期,对它们进行加密并将其设置为 cookie - 然后在用户返回 cookie 时检查到期日期,并定期更改 guid。同样,这绝不是针对网络嗅探的安全措施,但它确实提供了一定程度的安全性以及跨会话记住用户的便利性。

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 1970-01-01
      • 2011-07-04
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      相关资源
      最近更新 更多