-1

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

<?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 中得到保护,还是我完全误解了这个话题?感谢帮助!

4

1 回答 1

1

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

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

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

于 2013-08-04T14:01:21.060 回答