如何进行会话固定?

时间:2013-08-04 13:29:04

标签: php session session-fixation

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

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

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

它是以某种方式保护在更高版本的Apache和PHP中还是我完全误解了这个主题?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

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

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

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