我的网络应用程序具有不同级别的用户,这些用户具有不同的网站访问权限。重要的是,用户只能访问自己的级别功能,例如超级用户可以访问群发电子邮件,删除,访问更敏感信息的用户等。
访问的主要区别在于菜单区域中的链接。当前它这样做是为了决定访问(使用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文件和位置的名称。
问题:这个系统是否足以防止相当称职的程序员强行进入管理员帐户?
谢谢! 亚历