有人可以解释一下会话固定是如何工作的吗?在我的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中还是我完全误解了这个主题?谢谢你的帮助!
答案 0 :(得分:1)
我想你可能误会了。 PHP使用PHPSESSID来存储会话的ID。通常,此值存储在cookie中,但如果禁用cookie,它也可以存储在URL中。
如果您在一个浏览器上读取url(或cookie)的值,则可以在另一个浏览器的url中使用该值来有效地接管该会话。这是因为PHP不会跟踪任何信息,只是使用该会话ID来标识会话。
我想在你的情况下,cookie也被启用,因此PHP使用存储的cookie而不是URL值。您可以先尝试删除cookie,完全禁用cookie并使用此URL,也可以更改cookie的值。