PHPSESSID COOKIE 拦截 篡改

用户的浏览器登录新版时,COOKIE 中的 PHPSESSID 被 改成了 _PHPSESSID ,造成 SESSION 无法跨页面传递,所以登录会失败。

暂且不管用户浏览器中的 SESSIONID 是被什么东东篡改的,想解决这个问题有2个办法.

办法一:修改session_name
直接修改 php.ini 找到 session.name = PHPSESSID , 改为 session.name = 自定义名称
$_COOKIE['自定义名称']


办法二:自动匹配cookie
在所有使用SESSION的页面,调用session_start();语句之前加入以下代码
session_name = session_name();//获取当前的session_name if(!isset(_COOKIE[session_name])) //查找sessionid是否存在 不存在说明cookie中的session_name被篡改了,需要去设置 { foreach(_COOKIE as key=>val)
{
key = strtoupper(key); //转换为大写
//如果包含 session_name 关键字则把该字串当做 sessionid 启用
if(strpos(key,session_name))//这里注意哪个的范围更广一些,一般session_name默认PHPSESSID,cookie中变化的话,这strpos(session_name(),key) { session_id(_COOKIE[key]);//获取新的 session_id } } } else { session_id(_COOKIE[$session_name]);//获取新的 session_id
}
session_start();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容