题目描述
将rs256加密后的cookies当成session来用,比如现阶段图片验证码加密后存在cookies,提交后解密验证,还有手机验证码,同时用http-only存入、ua、ip、过期时间等信息,就想问下这样做的人多吗,有没有人实际应用到已经运营的项目当中,从安全性上给点建议,例如cookies被截取,伪造等。我的理解是只要rs256的公钥密钥不泄露,定期签发公钥密钥,理论上是挺安全的。一般你们用什么方式保存临时数据居多
题目来源及自己的思路
用php做一个网站项目,怕以后涉及到高可用要做负载,用session和redis存后端临时数据对服务器架构和后期维护不方便,所以采用rs256加密cookies直接存入就不用部署redis或者做session同步操作了
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
public function set_rsa_cookies($name, $data)
{
$jwt = JWT::encode($data, \Flight::get('rsa.private.key'), 'RS256');
setcookie($name, $jwt, 0, '/');
}
public function get_rsa_cookies($name)
{
if (isset($_COOKIE[$name])) return [];
$decoded = JWT::decode($_COOKIE[$name], \Flight::get('rsa.public.key'), array('RS256'));
return (array)$decoded;
}
你期待的结果是什么?实际看到的错误信息又是什么?
相互交流下web下临时数据存入的经验即可
虽说你指定了RS256作为非对称加密方式能很大程度上提高安全性,同时依靠cookie的过期时间再提高安全性。事实上还可以继续做非常多的事情进一步提高安全性。
但是为什么不使用早就已经成熟的 Oauth2 呢?