由 ASP.NET 网络应用程序设置时,Cookie 的安全性如何

本文关键字:Cookie 安全性 NET ASP 网络 应用程序 设置 | 更新日期: 2023-09-27 18:34:54

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

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

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

注意:我无权访问 SSL。

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

由 ASP.NET 网络应用程序设置时,Cookie 的安全性如何

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

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

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

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

但是,如果您确实需要,则应始终加密数据。窗体身份验证 Cookie 上的默认加密是通过 DPAPI 进行的,DPAPI 使用运行 Web 应用的用户上下文和计算机密钥,因此它不适合负载平衡环境。

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

对于您自己管理的 cookie,您必须使用加密 API,或者一些包装器或实用程序类,例如这个。对于表单身份验证 cookie,有允许您配置加密机制的保护设置。

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

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

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

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