控制面板 - 帮助中心 - 付款方式 - 常用文档 - 软件下载 -   
服务中心
当前位置:首页 - 服务中心 - 网络学院

PHPSESSID COOKIE 拦截篡改解决

近日公司内部频道改版,有几个同事反映无法登陆新版和注册,但可以在老版正常登录使用。

分析一下新版和旧版的不同之处:

新版登录验证用了COOKIE + SESSION

老版登录验证只用了 COOKIE。

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

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

办法一:修改session_name

直接修改  php.ini 找到  session.name = PHPSESSID , 改为  session.name = 自定义名称

----------------------------------------------------------------------------------------------------------------------------

办法二:自动匹配cookie

在所有使用SESSION的页面,调用session_start(); 语句之前加入以下代码

$session_name = session_name();

if(!isset($_COOKIE[$session_name]))
{
     foreach($_COOKIE as $key=>$val)
     {
         $key    = strtoupper($key); //转换为大写
               
        //如果包含 session_name 关键字则把该字串当做 sessionid 启用
        if(strpos($key,$session_name))
        {
          session_id($_COOKIE[$key]);
        }
     }
}

session_start();

更新时间:2012-2-17

7*24小时咨询热线:400-628-6536 0371-86013552 19937165195
传真:0371-86013552-6612 服务邮箱:web@3a88.com 代理邮箱:agent@3a88.com 备案邮箱:beian@3a88.com
运营商:郑州金飞科技有限公司 工商营业执照号:9141010567945717XL
公司地址:郑州高新技术产业开发区木兰里9号1号楼1单元14层310号 邮政编码:450000 豫ICP备12025635号-1 豫公网安备 41010502003077号