用户可以修改PHP会话吗?

时间:2011-12-29 12:32:33

标签: php

page1.php中:

<?php
session_start();
if ($_POST['password'] == "testpass")
    $_SESSION['authenticated'] = true;
?>

使page2.php

<?php
session_start();
if (isset($_SESSION['authenticated']) && $_SESSION['authenticated'] == true) {
    echo "Super secret stuff!";
}
?>

用户可以在没有超级安全密码的情况下进入吗?

3 个答案:

答案 0 :(得分:15)

没有。 $ _SESSION变量中的数据存储在服务器上,无法从用户访问。

会话通过cookie与用户耦合。具有标识符(即,长随机字符串)的cookie被发送给用户以识别用户并将他链接到他的会话。如果其他人获得了访问此cookie的权限,他可以使用相同的代码来说明他是用户,并且这样他就可以在没有密码的情况下进入。

答案 1 :(得分:2)

会话只能从PHP代码修改,不像$_POST, $_GET, $_COOKIE

另外,我认为您可以使用empty()来简化条件:

<?php
session_start();
if (!empty($_SESSION['authenticated']) {
    echo "Super secret stuff!";
}
?>

答案 2 :(得分:2)

会话可以在不同的场合进行修改..见这 - &gt; Session Poisoning