如果会话名称在两个不同的网站上相同会发生什么?

 企鹅田先生 发布于 2023-02-12 15:17

我有两个差异.我的项目XAMPP就是Project1Project2.
当我登录时Project1,我检查身份验证,如果成功,则存储会话.会话名称是$_SESSION['username'].
以上过程与之相同Project2.

现在,为了防止直接访问,我使用这个代码(在两个项目中):

if($_SESSION['username']=="")
{
  header("location:index.php");
}

所以当我登录时Project1,我也可以访问Project2(无需登录).
为了防止这种情况,我知道如果我创建差异.两个项目的会话名称然后它被解决.

上面的内容是在我的本地服务器上.所以我可以创造差异.我所有项目的会话名称.

但是假设我的网站在线,如果我的会话名称与diff匹配会发生什么.现场?
有数百万个网站,我的会话名称有可能与其他网站的会话名称相匹配.然后,有些用户可能会使用其他网站(在同一浏览器中)访问我的网站而他可能无法访问我的网站登录.

那么如果两个差异的会话相同会发生什么.网站?用户无需登录即可访问我的网站吗?如果是,那么我应该怎么做才能防止它呢?

提前致谢.

UPDATE

根据@Let me see的回答,如果两个站点在同一台服务器上运行,那么它们可能会共享数据.
所以假设服务器正在共享那么我应该怎么做以防止它呢?

2 个回答
  • 会话(通常)使用cookie存储,而cookie是特定于域的.因此,google.com或evilhackerdomain.ru使用与您的应用相同的会话名称无关紧要; 您的cookie只能由您指定的域读取/使用.即使在会话以其他方式管理的不寻常场景中,它也将是特定于域的.

    2023-02-12 15:20 回答
  • 所以假设服务器正在共享那么我该怎么做以防止它呢?

    回答你的后续问题.您可以在使用session_name()之前使用特定网站命名您的会话session_start().

    session_name('PROJECT1');
    session_start();
    

    这个单行应该做到这一点.

    2023-02-12 15:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有