Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当由ASP.NET web应用程序设置cookie时,cookie的安全性如何?_C#_Asp.net_Security_Cookies_Encryption - Fatal编程技术网

C# 当由ASP.NET web应用程序设置cookie时,cookie的安全性如何?

C# 当由ASP.NET web应用程序设置cookie时,cookie的安全性如何?,c#,asp.net,security,cookies,encryption,C#,Asp.net,Security,Cookies,Encryption,我想知道cookie有多安全,以及它是否可以被设置它的应用程序以外的其他应用程序读取 我想设置一个cookie来存储一些敏感数据,以便我的站点随时读取 其他应用程序是否可以读取我的应用程序设置的cookie?如果是,我是否需要加密存储在cookie中的数据 注意:我没有访问SSL的权限 编辑:我要存储的信息是用户详细信息。我正在创建一个白色标签的网站。根据特定url(例如www.mysite.com/joebloggs)的请求,我希望有关Joe Bloggs的用户数据存储在客户机上。当客户端返回

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

我想设置一个cookie来存储一些敏感数据,以便我的站点随时读取

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

注意:我没有访问SSL的权限


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

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

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


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

如果您可以避免在cookie中包含敏感数据,那将是最好的选择。因为正如在另一个答案中所说的,用户计算机上的任何东西都可能被破坏

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

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

对于您自己管理的cookie,您必须使用Crypto API或一些包装器或实用程序类,例如。
对于Forms Authentication cookie,有一些设置允许您配置加密机制。

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

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

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


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

这是用于身份验证的吗?如果是这样,您可以像在英国一样使用
FormsAuthentication
类对其进行加密/解密-请记住,您需要获得用户的明确许可才能存储cookie。您试图防御什么?你怕谁?@SLaks你在说什么?!我只是想确保没有人可以访问用户数据。@David:你具体想阻止谁?例如,如果你在防御那些有权访问客户端机器的人,那么你根本不能使用cookie。那么你是说我必须加密我想存储在cookie中的任何数据吗?@David:你害怕什么/谁?不。SLaks暗示,这完全取决于你存储的数据。一般来说,你不应该在客户端存储非常重要的完整数据,因为你无法控制它。我对原始帖子做了一些编辑,这样你就可以看到我想要做什么。