Php 如果两个不同网站上的会话名称相同,会发生什么情况?
我在我的Php 如果两个不同网站上的会话名称相同,会发生什么情况?,php,session,Php,Session,我在我的XAMPP上有一个两个不同的项目说它是Project1和Project2 当我使用Project1登录时,我会检查身份验证是否成功,然后检查存储的会话。会话名称为$\u session['username'] 上述过程与Project2相同 现在,为了防止直接访问,我使用以下代码(在两个项目中): 因此,当我使用Project1登录时,我也可以访问Project2(不登录)。 为了防止出现这种情况,我知道如果我为这两个项目创建了diff.session name,那么问题就解决了 以上内
XAMPP上有一个两个不同的项目
说它是Project1
和Project2
当我使用
Project1
登录时,我会检查身份验证是否成功,然后检查存储的会话。会话名称为$\u session['username']
上述过程与
Project2
相同
现在,为了防止直接访问,我使用以下代码(在两个项目中):
因此,当我使用Project1
登录时,我也可以访问Project2
(不登录)。为了防止出现这种情况,我知道如果我为这两个项目创建了diff.session name,那么问题就解决了 以上内容在我的本地服务器中。因此,我可以为我的所有项目创建不同的会话名称 但是,假设我的站点处于联机状态,如果我的会话名称与diff.site匹配,会发生什么情况?
有数百万个网站,我的会话名称可能与另一个网站的会话名称相匹配。然后,可能会出现这样的情况,即某些用户使用另一个网站(在同一浏览器中)访问我的网站,而他可能未登录就访问了我的网站 那个么,若两个不同网站的会话相同,会发生什么呢?用户无需登录即可访问我的网站吗? 如果是,我应该怎么做来防止它 提前谢谢 更新 根据
@让我看看的答案,如果两个站点运行在同一台服务器上,那么它们可能共享数据。
因此,假设服务器正在共享,那么我应该如何防止它 PHP会话存储在服务器中。因此,当您上线时,相同会话名称之间不会有任何冲突。请记住,您仍然可以选择将会话存储在数据库中,这有助于提高安全性。会话(通常)使用cookie存储,cookie是特定于域的。因此,google.com或evilhackerdomain.ru是否使用与您的应用程序相同的会话名称并不重要;您的cookie只能由您指定的域读取/使用。即使在以其他方式管理会话的异常情况下,它也将是特定于域的。不会发生任何事情。因为另一个站点使用自己的数据库(具有自己的会话和用户表)。只有两个站点共享相同的数据库、相同的表和相同的会话处理,这才有关系 通常会话的会话ID存储在cookie中,它与主机名相关,可以由具有相同域的多个主机名共享。显然,会话存储在服务器上
因此,如果两个站点在同一台服务器上运行,则它们可能共享数据。因此,您应该始终更改服务器上存储会话的路径,以便每个不同的网站,由于以下原因,用户在未登录的情况下无法访问:
会话数据存储在上。如果两个应用程序在同一台服务器和同一个域名上运行,那么它们就有可能共享会话数据。否则,如果域不同,则不会与会话值冲突
因此,假设服务器正在共享,那么我应该如何防止它
回答您的后续问题。在会话开始()之前,您只需使用会话名称()
在特定网站上命名会话即可。
这一行应该可以做到。我认为如果我们使用像MD5
这样的安全算法来加密您将用于登录的会话。这将毫无问题地起作用。例如:
$name_session='username';
$name_session=md5(md5(md5($name_session));
$_SESSION[$name_session]="username_logged";
并非所有会话都使用cookie存储。这取决于您正在使用的网站。如果使用同一台服务器,会发生什么情况?这不重要,但这是一个您需要格外小心的实例--始终检查用户提供给您的会话cookie在相关域上是否有效。正如@sravis所指出的,将会话存储在数据库中有助于实现这一点。请参阅@Let me see的答案。感谢您的回答。如果同一服务器中的域不同,那会怎样?这样就不会产生任何问题,因为会话的名称是唯一的根据@Ed Cottrell
cookies是特定于域的。那个么,若会话是相同的(在同一服务器中的不同域的情况下),会发生什么呢?谢谢你们的建议。
session_name('PROJECT1');
session_start();
$name_session='username';
$name_session=md5(md5(md5($name_session));
$_SESSION[$name_session]="username_logged";