【问题标题】:Is storing data in PHP $_SESSION insecure?在 PHP $_SESSION 中存储数据不安全吗?
【发布时间】:2011-10-27 14:20:02
【问题描述】:

据我了解,PHP 进程的行为不像应用程序服务器进程。因此,在执行脚本后,PHP 进程不会保留用户特定的数据。而是将它们存储在用户的 cookie 中。所以我们存储在$_SESSSION 中的任何东西都会进入cookies。这是真的?如果是,那么它们是以明文形式存储还是进行了某种编码或加密?

【问题讨论】:

标签: php session-state php-5.3


【解决方案1】:

不,进入会话 cookie 的唯一内容是会话的 ID - 一个随机的字母数字字符串。所有会话数据都存储在服务器上的一个文件中(使用默认会话处理程序,尽管您可以覆盖以将数据存储在任何位置/任何您想要的方式)。

【讨论】:

  • 伪随机足以在我的书中算作“随机”。会话 ID 并不是完全可以猜测的。
  • 我想这个笑脸不足以传达帖子的预期快乐。我完全同意,但我也想写那个。
【解决方案2】:

不,那不是真的。只有会话的 ID 存储在会话 cookie 中。会话数据全部存储在服务器端(尽管默认情况下是纯文本)。

【讨论】:

    【解决方案3】:

    存储在客户端计算机上的“cookie”是一个会话 ID。 “会话”本身驻留在服务器上。当在会话期间请求页面时,会话 ID 会附加到查询字符串中,让服务器知道要为该请求加载哪个会话。

    除非会话 ID 被盗(并且会话被“劫持”),否则会话是安全的。您可以通过在会话中存储创建会话的 IP 地址和用户代理字符串并将它们与每个页面访问的请求 IP 地址和用户代理字符串进行比较来防止这种情况(在某种程度上)。请记住,这些依赖于 HTTP 标头并且可以被欺骗。

    【讨论】:

      【解决方案4】:

      cookie 只是存储在客户端中的标识符。这些是随每个 HTTP 请求提供给服务器的。然后,服务器将 cookie 标识符与存储的数据进行匹配,并为 $_SESSION 检索正确的值。

      【讨论】:

        猜你喜欢
        • 2012-03-03
        • 2020-09-15
        • 1970-01-01
        • 2011-02-10
        • 2011-07-25
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 2022-06-27
        相关资源
        最近更新 更多