我希望会话数据加密,就像它们在suhosin中一样,是否有任何库提供?
答案 0 :(得分:4)
您可以轻松使用mcrypt或自定义AES加密来加密会话数据。最好的办法是创建一个会话包装器类,在设置它们时加密变量。
对于密钥管理,您可以创建一个唯一密钥并将其存储在cookie中,这样只有用户才能解密自己的会话数据。
答案 1 :(得分:0)
这里有Zend Framework的示例实现: http://www.eschrade.com/page/encrypted-session-handler-4ce2fce4/
重要的参考功能:
// $this->secredKey is stored in a cookie
// $this->_iv is created at the start
public function setEncrypted($key, $value)
{
$_SESSION[$key] = bin2hex(
mcrypt_encrypt(
MCRYPT_3DES,
$this->secretKey,
$value,
MCRYPT_MODE_CBC,
$this->_iv
)
);
}
public function getEncrypted($key)
{
if (isset($_SESSION[$key])) {
$decrypt = mcrypt_decrypt(
MCRYPT_3DES,
$this->secretKey,
pack(
'H*',
$_SESSION[$key]
),
MCRYPT_MODE_CBC,
$this->_iv
);
return rtrim($decrypt, "\0"); // remove null characters off of the end
}
return null;
}