1,域名a和域名b位于同一根域下,项目a和项目b分别属于不同项目,两个域名共用登录后的session,
如:
域名a a.xxx.com -> 项目a,
域名b b.xxx.com -> 项目b,
目前做法是项目a获取到的sessionID通过参数session_id = $session_id的方式传到项目b,
项目b用session_id($session_id)获取到登录信息, 这种情况会暴露sessionID,容易被session劫持,有什么办法防止?或者有什么比较的办法在可以不同项目之间安全地共享sessionID?
2,已经尝试的方法:项目a将sessionID写入根域cookie httponly,项目b通过php代码直接获取cookie, 此种方法IE8浏览器会有问题,待解决。。。
项目b获取session的代码:
$session_id = $_GET('session_id');
if (!empty($session_id)) {
$session_id = htmlspecialchars($session_id);
session_id($session_id);
}
......
你们没有用session共享吗?
不用服务器自带的session,自己实现一套session啊.可以看一下laravel框架的session机制.
通过 用户id+根域名 加密的密钥去数据库中取session内容去
如果麻烦的话也不要太耿直的直接发送session_id啊,网上找个加密&解密的方法再传递啊
用session_save_path为不同项目配置不同的路径,或者换用其他Session存储机制。