是否可以绕过PHP会话检查?

时间:2014-07-11 23:26:03

标签: php

我有一个用户登录字段,用于在登录页面验证后设置会话:

 $_SESSION['user'] = $user;
 $_SESSION['id'] = $id;

在这个PHP页面上,我只希望登录用户访问我的顶部:

<?php session_start();
if (!isset($_SESSION['id']) && !isset($_SESSION['user']))
{
    header('Location: http://--back to home page--');
    exit(); <-- Added thanks to comments
}
?>

这是否足以让未登录页面的用户保持不变? 当我没有登录时,它会将我重定向回主页,但人们可以绕过它吗?

编辑:我现在添加了exit();

1 个答案:

答案 0 :(得分:2)

用户可以绕过HTTP Location标头。马上添加die();(相当于exit();),以防止将任何其他内容发送到浏览器。

if (!isset($_SESSION['id']) && !isset($_SESSION['user'])){
    header('Location: http://--back to home page--');
    die();
}

<小时/> 除此之外,请注意用户可以更改PHPSESSID Cookie。如果他们找到了问题集中的变量的活动会话的ID,他们就可以访问该页面。