2

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

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

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

注意:我无权访问 SSL。

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

4

3 回答 3

9

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

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

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

于 2012-05-21T15:07:03.093 回答
1

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

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

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

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

于 2012-05-21T15:28:45.837 回答
1

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

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

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

Probably a reasonable approach would be to generate a guid, and an expiry date, encrypt them both and set that as the cookie - then check the expiry date when the user comes back with the cookie, and periodically change the guid. Again, this is by no means secure against network sniffing, but it does give some measure of security as well as the convenience of remembering users across sessions.

于 2012-05-21T16:12:19.830 回答