如何检查用户是否是管理员SECURE

时间:2019-04-18 14:02:17

标签: php mysql security superuser

我做了一个具有bruteforce保护功能的登录功能,不同的bot保护功能,例如honeypot ..,输入过滤,Argon2加密密码。

但是最终要识别用户,我将在成功登录后将ID保存在会话中。 直到现在,我都使用此ID来检查“ admin”列的值是1还是0。

如果此值为1,则用户可以执行所有操作。

我如何提高安全性?
我还能如何检查用户是否是管理员?

1 个答案:

答案 0 :(得分:0)

您应该照我指示的去做

只要您有用户ID,就可以完成

我将假定您具有function.php,该函数具有您在网站上使用的所有功能

您还具有登录功能,可检查用户帐户详细信息并授予访问权限 现在,您需要对此进行改进,以限制用户访问权限

第一: 在MySQL创建表中称它为“ group”,该表将有两个记录或您希望的那样。管理员的ID为1,成员的ID为2,那么您可以进行很多修改,例如在该表中创建称为上载的另一列,并将admin设置为yes,将成员设置为no

您登录功能中的第二项使用以下

    $res = mysql_query("SELECT * FROM users INNER JOIN group ON users.class=group.group_id WHERE users.enabled='yes' AND users.status = 'confirmed'") or die(mysql_error());
$row = mysql_fetch_array($res);

Users.class是组ID,users是表users 现在,您可以以组信用为例,如果在上传页面上执行以下操作

    if($row["can_upload"]=="no")
    echo("admin only can upload ");

您可以根据需要检查组上的凭据,还可以创建许多类,例如admin,成员,上位者,审稿人,作者,并在查看网站内容时为每个类赋予特殊权限

在admin.php上,您可以使用

    if($row["admin"]=="no")
    ech("admin only can view this page ");

在以上两个示例中,Admin和can_upload都是组表中的列,并且已由用户类更改。