允许用户访问特定功能的最佳做法

时间:2016-09-23 02:49:59

标签: php security authentication

我的网络应用程序具有不同级别的用户,这些用户具有不同的网站访问权限。重要的是,用户只能访问自己的级别功能,例如超级用户可以访问群发电子邮件,删除,访问更敏感信息的用户等。

访问的主要区别在于菜单区域中的链接。当前它这样做是为了决定访问(使用POST发送存储在会话变量中的用户ID):

// and the userlevel (i.e. 50 for me, 10 for super user etc)
$query_ulevel = $database->prepare("SELECT ulevel FROM user_table WHERE id=?");
$query_ulevel->bind_param("i", $_POST['uid']);
$query_ulevel->execute();
$userlevel = $query_ulevel->get_result()->fetch_assoc();

要获得用户级别,请执行以下操作:

// super user options
if($userlevel['userlevel'] > 0) {
    ?><hr />

    <div onclick="user.liststatistics()" class="usermenu-line">
        Student Statistics
    </div>

    <?php 
}

显示它。有一个明显的问题是,用户标识是自动递增的,而且只是数字(与用户注册时随机分配的长度为X的键 - 我打算转换为的系统)这是最好的方法。 ?有没有办法让用户绕过这个系统?这是使用PHP生成服务器端这一事实我认为它很好且安全,使用POST和(最终)随机ID值意味着很难强制ID进入文件输出结果,并且主javascript文件被混淆并且minified意味着它不那么容易(但如果你知道如何,可能很容易)阅读并找到php文件和位置的名称。

问题:这个系统是否足以防止相当称职的程序员强行进入管理员帐户?

谢谢! 亚历

0 个答案:

没有答案