繁体   English   中英

当ASP.NET Web应用程序设置Cookie时,它的安全性如何?

[英]How secure are Cookies when set by an ASP.NET web application?

我想知道一个cookie是多么安全,以及它是否可以被设置它的其他应用程序读取。

我想设置一个cookie,用于存储我网站的一些敏感数据,以便随时阅读。

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

注意:我无权访问SSL。

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

在用户计算机中运行的任何代码(包括浏览器插件)都可以随时读写cookie,而您无法做到这一点。 (加密除外)

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

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

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

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

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

对于你管理自己的cookies,您就必须使用加密API,或者一些包装或实用工具类,比如这一个 对于Forms Authentication cookie,有一些保护设置可让您配置加密机制。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM