1

抱歉,我之前问过一个与此相关的类似问题,但我修复了代码(我认为)以使其完全针对管理员和!普通用户帐户。

管理员和用户一起共享成员列表页面。不同之处在于:管理员得到类似的东西

Edit | Delete | Make Admin

这是您最需要查看的基本代码....

if(@$_GET['id'] != ""){
    if (has_access($session_user_id, 1) === false) {
        header('Location: index.php');
        exit();
    }
    $userID = intval($_GET['id']);
        if (!$userID) {
        header('Location: index.php');
        die();
    }
    $sql = "DELETE FROM users WHERE user_id='".$userID."'";
    $query  = mysql_query($sql);
    header('Location: members.php?id=&page=1');
}

让我解释一下代码的不同部分:

if(@$_GET['id'] != ""){
    if (has_access($session_user_id, 1) === false) {
    header('Location: index.php');
    exit();
}
.....continued

这就是说,如果 url 中的 id 不等于“”,请检查用户排名(管理员或普通用户)如果他是普通用户,请将他移动到索引页面并停止脚本!

普通用户不应该编辑 id 语句......如果他们这样做......这意味着他们这样做是为了黑客或某种目的......

现在进入下一部分

$userID = intval($_GET['id']);
    if (!$userID) {
    header('Location: index.php');
    die();
}

这基本上是 intval 所以 id 是唯一的!一个数字,这会阻止诸如

'; DELETE FROM users WHERE user_id=19;

NEXT... 一个额外的安全功能,如果不是用户 ID 重定向并退出

最后,

$sql = "DELETE FROM users WHERE user_id='".$userID."'";
    $query  = mysql_query($sql);
    header('Location: members.php?id=&page=1');
}

运行 sql 并将用户重定向回同一页面以获得刷新的结果。

这是我所说的正确逻辑吗?

这是我的完整 members.php 文件

http://pastebin.com/tkstyrWg

该网站也正在测试中

http://1334.3owl.com

members.php 实际上有一个

protect();

如果用户未登录,该功能会将用户重定向到主页

你可以随意在这个网站上测试sql注入...

这是一个可用于测试的演示用户

demouser
demopass

如果脚本不安全......我该如何做到这一点?

对管理员也安全吗?

我的 url 中的 sql 脚本是否正确?

4

1 回答 1

1

我没有检查你的整个脚本,但关于 intval,它应该是确保它安全所需的全部内容,因为它只是一个用户 ID....

于 2013-10-20T16:57:15.390 回答