Php 这个安全吗。用户级管理

Php 这个安全吗。用户级管理,php,security,Php,Security,在初始化会话数据并定义变量$auth_level之后,我在所有页面上使用以下代码 我用它来决定向不同级别的用户显示什么 <?php if($auth_level == 'basic'){ // auth_level basic if (!isset($_SESSION['username'])) { header('Location: login.php'); } } else if ($auth_le

在初始化会话数据并定义变量$auth_level之后,我在所有页面上使用以下代码

我用它来决定向不同级别的用户显示什么

<?php
    if($auth_level == 'basic'){
        // auth_level basic
        if (!isset($_SESSION['username'])) {
            header('Location: login.php');
        }
    } else if ($auth_level == 'admin'){
        // auth level admin
        if (!isset($_SESSION['username']) || $_SESSION['role'] != 2) {
            header('Location: login.php');
        }
    } else {
        // auth level admin assumed for security
        if (!isset($_SESSION['username']) || $_SESSION['role'] != 2) {
            header('Location: login.php');
        }
    }
?>

这个可能会有帮助:


简而言之:您应该在$_会话中存储更多信息以区分客户端(如ip等),否则,我可以使用您的会话ID获取您的cookie,并根据您获取“用户名”和“角色”值的方式进行正确的身份验证。

如果您不退出
标题之后('位置:…)脚本不会在该点停止。顺便说一句,这是离题的,因为我可能还没有喝足够的咖啡。。。但它看起来像是在检查身份验证级别,然后检查用户名是否设置在auth_level=='basic'块中。你应该先检查用户名吗?为什么说“如果
$auth_level
是“admin”,那么就这样做,但是如果是其他的,那么就做同样的事情?为什么不简单地做
if(basic){}else{}
?你可以做一件事。你可以做一个文件”导航器“并将其包含在每一页中。有时我有两个以上的用户级别,这就是为什么我有额外的语句。