• 3
  • 新人请关照

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

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

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

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

      • 2.7k

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

        撰写回答

        登录后参与交流、获取后续更新提醒

        相似问题
        推荐文章