php如何防止同一根域但不同项目的情况下session劫持
怪我咯
怪我咯 2017-04-11 09:46:48
[PHP讨论组]

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)
高洛峰

你们没有用session共享吗?

黄舟

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

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

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号