代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

在PHP中防止会话冲突

  •  2
  • Manos Dilaverakis  · 技术社区  · 15 年前

    在强制facepalm之后,我更改了其中一个系统中的会话变量名以停止此操作。但是,我需要对会话处理类进行永久的零维护更改,以避免在将来的项目中出现这种情况。我认为这可以通过使用一个唯一的值(例如脚本路径)将一个应用程序的变量放在$会话中另一个应用程序不会使用的位置来实现。

    有更好的办法吗?

    编辑:这是在linux上。两个应用程序都在同一个网站上。

    3 回复  |  直到 15 年前
        1
  •  5
  •   Tom Haigh    15 年前

    您可以通过确保Cookie的域和路径设置有限制,例如,对于位于的应用程序,确保会话Cookie特定于应用程序 http://www.example.com/apppath

    <?php
    
    $currentParams = session_get_cookie_params();
    
    session_set_cookie_params($currentParams['lifetime'], '/apppath/', 'www.example.com', $currentParams['secure'], $currentParams['httponly']);
    
    session_start();
    

    这将保留其他会话设置不变。

        2
  •  1
  •   Kothar    15 年前

    设置cookie路径,以便每个应用程序仅存储对其自身路径有效的会话cookie。

    您可以使用 session_set_cookie_params 呼叫

        3
  •  0
  •   Taryn Frank Pearson    13 年前

    当谈到共享主机时,最好将会话id存储在数据库中,而不是存储在服务器上。关于如何将会话id存储在数据库中,有很多资料可用,更定期地更改记录的用户会话id也可以提高安全性并减少冲突。