0

除了您不应该将重要信息存储在 cookie 中这一事实之外,您建议我使用什么加密方法来加密 cookie 的内容?

关键是 cookie 只能保存这么多数据(我认为是 4k?),因此加密算法不应该将内容的大小增加到成为问题的程度。

cookie 当前存储:

WebsiteId (integer value
Name      varchar(50)
Country   varchar(50)
4

1 回答 1

6

听起来您实际上是想防止数据被篡改,而不是对其进行加密。一种简单的方法是使用HMAC。基本上,您有一个服务器密码,您使用服务器密码对数据进行哈希处理,然后将哈希后的输出放入 cookie 中。要验证它,您从 cookie 中删除哈希,使用服务器密码计算其余数据的哈希,然后将其与 cookie 中的哈希进行检查。数据不能被篡改,因为攻击者无法计算正确的哈希值,因为他们不知道服务器机密。

因此,例如,如果数据是“foo=bar&baz=qux”,您将计算“foo=bar&baz=qux”的安全哈希,假设它是“EN0RmBxNGyo”,并将 cookie 设置为“foo=bar&baz=qux&hash=EN0RmBxNGyo” ”。然后,当您取回 cookie 时,您删除散列以获取“foo=bar&baz=qux”并计算它的散列。您再次获得“EN0RmBxNGyo”,它与 cookie 中的哈希匹配,因此您接受 cookie。

如果攻击者更改“foo=bar&baz=qux”,哈希将不匹配,cookie 将被拒绝。他们无法计算与更改的数据相对应的哈希,因为他们不知道用于计算哈希的服务器秘密。

请注意,您应该让一位称职的密码学家审查您的实施。执行不力的 HMAC 可能容易受到长度扩展攻击,这是 Flickr 发现的一个困难的事实。

于 2013-09-27T20:37:29.713 回答