用户可以修改PHP会话吗?
page1.php中:用户可以修改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!";
}
?>
用户可以得到在没有超级安全的密码?
号中的数据$ _SESSION变量存储在服务器上,用户无法访问。
会话是通过一个cookie耦合到用户。具有标识符(即长随机字符串)的cookie被发送给用户以识别用户并将他与他的会话关联起来。如果其他人可以访问这个cookie,他可以使用相同的代码来保证他是用户,并且这样他就可以在没有密码的情况下进入。
感谢确认,通过提供更多的信息:) – BronzeByte 2011-12-29 13:07:50
的问题是'能否获得用户在没有超级安全的密码',答案是YES? – 2011-12-29 13:10:03
@PoelincaDorin - 我认为任何人在他们的头一点点的盐可以看到什么问题,什么是正确的答案。你的不是。这是一个。 – 2011-12-29 14:15:28
会话只能从PHP代码进行修改,它不像$_POST, $_GET, $_COOKIE
等
顺便说一句,我认为你可以使用empty()
简化您的条件:
<?php
session_start();
if (!empty($_SESSION['authenticated']) {
echo "Super secret stuff!";
}
?>
这只是一个基准;) – BronzeByte 2011-12-29 13:06:24
会议可以在不同的场合进行修改。请参见本 - >Session Poisoning
+50!惊讶没有投票了..任何更新的信息?你能记录质量保证答案吗? – wpcoder 2017-11-01 22:48:23
的用户不能修改服务器上的PHP会话。他们只能伪造合法的cookie并伪装成已登录的用户 - 但这需要他们首先窃取有效的cookie。 – AbdullahC 2011-12-29 12:34:05
不是你需要你对真实变量的检查在你的测试用例,但比较布尔值,当你最好不要使用相同的比较。 $ test === true。力争尽可能严格。 – MetalFrog 2011-12-29 12:58:55
@MetalFrog我知道,但如果没有验证(只是在这种情况下,基准),我会用==我还可以提供“真”或1或“1” – BronzeByte 2011-12-29 13:09:36