2012-05-21 40 views
2

我想知道cookie的安全程度,以及它是否可以被设置它以外的其他应用程序读取。由ASP.NET Web应用程序设置时Cookie的安全性如何?

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

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

注意:我无权访问SSL。

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

+0

这是认证?如果是这样,您可以使用“FormsAuthentication”类对其进行加密/解密http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx – mattytommo

+0

如您在英国 - 记住您需要获得用户的明确许可才能存储该Cookie。 –

+0

**你想捍卫**什么?你害怕谁? – SLaks

回答

1

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

但是,如果您需要,您应该始终加密数据。 Forms Authentication cookie上的默认加密是通过DPAPI使用运行Web应用程序和计算机密钥的用户上下文进行的,因此它不适用于负载平衡环境。

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

对于您自己管理的cookie,您必须使用Crypto API或某些包装或实用程序类(例如this one)。 对于Forms Authentication cookie,有protection设置可让您配置加密机制。

9

用户计算机上运行的任何代码(包括浏览器插件)都可以读取和写入cookie,并且您无法做任何事情。 (加密除外)

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

的Web应用程序无法读取或写入的cookie,除了在有限的情况下为同级域(例如,x.cloudapp.nety.cloudapp.net)(见饼干折腾)

+0

那么你是说我必须加密我希望存储在cookie中的任何数据? – David

+2

@大卫:你害怕什么/谁? – SLaks

+0

不是。正如SLaks暗示的那样,它完全取决于您要存储的数据。作为一般的经验法则,您不应该在客户端存储非常重要的整数数据,因为您无法控制它。 – Jim

1

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

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

在一天结束时,有可能在没有SSL的情况下嗅探流量,因此任何通过网络发送的cookie都可能被具有恶意意图的人嗅探到,并且如果该cookie用于识别系统上的用户,那么他们很容易模仿该用户。使用Guid的好处是,如果有人设法找到一个人的cookie,他们将无法猜测出一个模式来找出其他人的模式,因此,一个人可能会受到影响,至少您的整个用户群将不会!

可能合理的方法是生成一个guid和一个失效日期,将它们加密并设置为cookie - 然后在用户返回cookie时检查失效日期,并定期更改guid。再说一次,这绝对不能防止网络嗅探,但它确实提供了一些安全措施以及跨会话记住用户的便利。

相关问题