我有两个差异.我的项目XAMPP
就是Project1
和Project2
.
当我登录时Project1
,我检查身份验证,如果成功,则存储会话.会话名称是$_SESSION['username']
.
以上过程与之相同Project2
.
现在,为了防止直接访问,我使用这个代码(在两个项目中):
if($_SESSION['username']=="") { header("location:index.php"); }
所以当我登录时Project1
,我也可以访问Project2
(无需登录).
为了防止这种情况,我知道如果我创建差异.两个项目的会话名称然后它被解决.
上面的内容是在我的本地服务器上.所以我可以创造差异.我所有项目的会话名称.
但是假设我的网站在线,如果我的会话名称与diff匹配会发生什么.现场?
有数百万个网站,我的会话名称有可能与其他网站的会话名称相匹配.然后,有些用户可能会使用其他网站(在同一浏览器中)访问我的网站而他可能无法访问我的网站登录.
那么如果两个差异的会话相同会发生什么.网站?用户无需登录即可访问我的网站吗?如果是,那么我应该怎么做才能防止它呢?
提前致谢.
UPDATE
根据@Let me see
的回答,如果两个站点在同一台服务器上运行,那么它们可能会共享数据.
所以假设服务器正在共享那么我应该怎么做以防止它呢?
会话(通常)使用cookie存储,而cookie是特定于域的.因此,google.com或evilhackerdomain.ru使用与您的应用相同的会话名称无关紧要; 您的cookie只能由您指定的域读取/使用.即使在会话以其他方式管理的不寻常场景中,它也将是特定于域的.
所以假设服务器正在共享那么我该怎么做以防止它呢?
回答你的后续问题.您可以在使用session_name()
之前使用特定网站命名您的会话session_start().
session_name('PROJECT1'); session_start();
这个单行应该做到这一点.