我正在考虑切换到将会话数据存储在加密的 cookie 中,而不是在我的服务器上的某个地方。虽然这会导致每个请求使用更多的带宽 - 它会节省额外的数据库服务器负载和存储空间。
无论如何,我计划使用RIJNDAEL 256 加密 cookie 内容。
function encrypt($text, $key)
{
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$text,MCRYPT_MODE_ECB,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB),MCRYPT_RAND));
}
在使用中会产生这样的东西(base64 编码用于显示)
print base64_encode(encrypt('text', 'key'));
7s6RyMaYd4yAibXZJ3C8EuBtB4F0qfJ31xu1tXm8Xvw=
我并不担心单个用户的 cookie 被泄露,因为我担心攻击者会发现key
并能够为任何用户构建任何会话,因为他们知道我使用什么来签署数据。
有没有办法可以验证与使用的参数相关的估计开裂时间?或者是否有与使用的文本或键的大小相关的标准时间度量?
我听说有人说密钥本身需要超过 256 位才能安全地与 RIJNDAEL 一起使用。我还想知道加密文本的长度是否需要一定长度才能不泄露密钥。
数据一般为200个字符左右
a:3{s:7:"user_id";i:345;s:5:"token";s:32:"0c4a14547ad221a5d877c2509b887ee6";s:4:"lang";s:2:"en";}
那么这安全吗?