我已准备好几篇关于会话安全性的文章,但我没有看到任何特别涉及我特定代码的内容。我对网站的安全性非常偏执,因为它有敏感的信息。
我的每个页面都以这行代码开头:
session_start();
if(!isset($_SESSION["username"]))
{
header("Location: login.html");
}
这足够安全吗?我是PHP的新手,但我读的越多,我就越偏执。有人可以简单地设置一个名为username的会话,并使其看起来像我的网站设置以获取访问权限吗?
答案 0 :(得分:2)
$_SESSION
值纯粹是服务器端,无法从客户端篡改。
很难说出您可能面临的其他问题,因为这只是您登录系统的一部分,而且还有许多其他问题可能会让您失望。
我们可以看到的一个问题是,在失败的情况下,您只需设置header
,而不是之后停止脚本(例如使用die()
)。即使用户未登录,该if
语句下的任何代码仍将执行,因此如果您有任何操作,用户可以执行它们而无需任何身份验证。