PHP将RS256加密后的cookies当成session用安不安全

新手上路,请多包涵

题目描述

将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下临时数据存入的经验即可

阅读 3.1k
2 个回答
  1. 保存在用户端的任何信息都是不安全的
  2. 可以被任何用户访问的内容都是不安全的

虽说你指定了RS256作为非对称加密方式能很大程度上提高安全性,同时依靠cookie的过期时间再提高安全性。事实上还可以继续做非常多的事情进一步提高安全性。

但是为什么不使用早就已经成熟的 Oauth2 呢?

不安全,加密只能保证数据不被破解,而不能保证数据不被伪造。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题