我应该使用什么加密来加密 Cookie 内容

本文关键字:加密 内容 Cookie 什么 我应该 | 更新日期: 2023-09-27 18:33:02

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

一个关键的事情是cookie只能容纳这么多数据(我认为它是4k?(,所以加密算法不应该将内容的大小增加到一个问题的程度。

该 Cookie 当前存储:

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

我应该使用什么加密来加密 Cookie 内容

听起来您实际上希望防止数据被篡改,而不是加密数据。一种简单的方法是使用 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发现的艰难事实。