php如何防止同一根域但不同项目的情况下session劫持

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);
}
......
阅读 3.4k
3 个回答

你们没有用session共享吗?

不用服务器自带的session,自己实现一套session啊.可以看一下laravel框架的session机制.
通过 用户id+根域名 加密的密钥去数据库中取session内容去

如果麻烦的话也不要太耿直的直接发送session_id啊,网上找个加密&解密的方法再传递啊

session_save_path为不同项目配置不同的路径,或者换用其他Session存储机制。

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