【问题标题】:How to do session fixation?如何进行会话固定?
【发布时间】:2013-08-04 13:29:03
【问题描述】:

有人可以解释一下会话固定的真正工作原理吗?在我的本地主机服务器上,我使用以下代码上传了文件:

<?php
 session_start();
 if (!isset($_SESSION['count'])) $_SESSION['count'] = 0;
 else ++$_SESSION['count'];
 echo $_SESSION['count'];
?>

我在浏览器中设置了地址:http://localhost/sessiontest.php?PHPSESSID=1234 它会从 0 writen 开始,按几次刷新按钮后,它将转到 1、2、3、4,...在我之前读过的书和互联网主题中,如果我在浏览器中使用这个地址在不同的浏览器或不同的PC中,它会显示第一个浏览器以mz结尾的数字。但是,当我将这个地址输入到第二台 PC 时,它是从 0 开始的。

它是否在更高版本的 Apache 和 PHP 中得到了保护,还是我完全误解了这个话题?感谢您的帮助!

【问题讨论】:

  • 您指的是 Robin Nixon 的Learning PHP, MySQL, JavaScript and CSS一书吗?
  • @jreut 是的,第二版,但我在这里找到了几乎相同的示例:shiflett.org/articles/session-fixation

标签: php session session-fixation


【解决方案1】:

我想你可能误会了。 PHP 使用 PHPSESSID 来存储会话的 ID。通常这个值存储在 cookie 中,但如果 cookie 被禁用,它也可以存储在 url 中。

如果您在一个浏览器上读取 url(或 cookie)的值,则可以在另一个浏览器中使用该 url 中的值来有效地接管该会话。那是因为 PHP 不跟踪任何信息,而只是使用该会话 id 来识别会话。

我猜在您的情况下,cookie 也已启用,因此 PHP 使用存储的 cookie 而不是 URL 值。您可以先尝试删除 cookie,完全禁用 cookie 并使用此 url,或者您可以更改 cookie 的值。

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多