猿问

我的其他项目中使用的会话信息

我目前正在制作两个不同但非常相似的基于 Web 的应用程序。所以我使用 PHP 和标准 MySQL(在我的例子中是 MariaDB,因为我使用 XAMPP,但我猜其中两个彼此相似)。仅供参考,我正在本地服务器上构建我的应用程序,该服务器正好位于我的 PC 中。


假设我的第一个项目是 Project1,它存储在 localhost/project1 中。同时,Project2 在 localhost/project2 中。它们都具有针对不同帐户/用户的登录功能。


因此,当他们尝试登录时,我会这样做。顺便说一下,它是MVC。


class Auth extends Controller {

   public function index()

   {

      // verification such as prevent raw attempt with no post data, etc.


      // verify the username and password, header back if fail, blablabla, u know...


      // and then the following is if succeeded

      $_SESSION['login'] = true;

      $_SESSION['id'] = // user id;


   }

}

我在我的两个项目中都使用了类似的系统。

问题

所以我试图弄清楚会话是如何工作的,我将自己登录到 localhost/project1。然后我打开 localhost/project2。令我惊讶的是,我不需要在 localhost/project2 中输入我的用户名和密码。我已经登录了。这些事情让我有些担心。所以这些是我的问题:

  1. 发生这种情况是因为我在自己的计算机上的本地服务器上开发我的网站吗?

  2. 难道你们不认为任何人都可以通过在他们的服务器中创建一些简单的程序 php 代码来闯入我的网站,如下所示:

    $_SESSION['登录'] =true; // 和其他会话

    然后只需访问该文件,这使他们的会话登录值为真,以及我使用的其他验证会话索引,然后只需访问我的网站并登录,就像某个手里拿着大 AK-47 的人走进来一样在没有特工通知的情况下从白宫的正门将他拘留?

  3. 为什么这真的发生了,你认为我应该如何解决它?我也有一些超时功能,所以我担心任何大的变化都会打扰我的大部分建设,但任何建议都非常受欢迎。

对不起,如果我的英语不好,或者我的 php 知识很可悲。我是新来的。


拉风的咖菲猫
浏览 121回答 1
1回答

Qyouu

会话通常由包含您的会话 ID 的 cookie 驱动。由于默认情况下 cookie 在同一个域中共享,如果您有两个项目都位于同一个主机/域(例如 localhost),并且都使用会话,那么它们将共享相同的 cookie,从而共享相同的会话数据。这意味着某人无法通过在他们自己的站点中设置随机会话来入侵您的站点。他们的会话数据仅适用于他们自己的站点。附带说明一下,建议用枪冲进白宫的类比通常不是一个好主意。只是一个友好的建议。
随时随地看视频慕课网APP
我要回答