【问题标题】:Can PHP sessions be manually edited?可以手动编辑 PHP 会话吗?
【发布时间】:2010-02-15 00:20:09
【问题描述】:

可以像 cookie 一样编辑 PHP 会话吗?或者它们存储在虚拟主机上?

【问题讨论】:

    标签: php


    【解决方案1】:

    会话密钥存储在客户端的浏览器中,而数据存储在服务器上。

    当用户在服务器上发出请求时,他们的会话密钥会通过网络发送,与他们的密钥关联的值会从服务器上的特定会话文件中检索出来,并可通过 $_SESSION 访问。

    如果密钥被截获,可能会劫持另一个用户的会话,这就是为什么您应该在会话中具有与用户的计算机/网络连接(例如 IP 地址)相关联的特定值。

    【讨论】:

    • 我不希望用户编辑数据。他不能编辑数据,对吧?
    【解决方案2】:

    用户无法编辑会话数据,因为它们存储在服务器上。但是,用户可以开始一个新会话并放弃他以前拥有的任何会话数据。此外,您应该注意潜在的security issues,例如会话固定。

    【讨论】:

      【解决方案3】:

      如果主机不小心,它们通常存储在网络服务器的 /tmp 目录中。这可以通过session_save_path( 进行更改,这是我对所有使用会话的 PHP 应用程序所做的事情。

      【讨论】:

        【解决方案4】:

        如下所示:

        1. 浏览器请求页面,借助 cookie 或 URL 提交您的 SID 或会话 ID。
        2. 服务器在 session_save_path() 中找到 cookie 文件并反序列化数组
        3. 您使用 PHP 访问该信息

        唉,客户端唯一知道的就是会话的 ID,但它可以被劫持,例如通过使用 cookie 窃取程序或其他跨站点脚本方法。例如,如果我得到了你的 SO 会话,那么 SO 不会比我更了解你。除非他们也检查我的 IP 或类似的东西。

        【讨论】:

          猜你喜欢
          • 2018-05-08
          • 2021-09-08
          • 2010-10-11
          • 1970-01-01
          • 2016-03-22
          • 1970-01-01
          • 1970-01-01
          • 2021-05-14
          • 2012-07-23
          相关资源
          最近更新 更多