【问题标题】:Is this code sql injectable? deleting users from within the $_GET url此代码 sql 可注入吗?从 $_GET url 中删除用户
【发布时间】:2013-10-20 16:54:10
【问题描述】:

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

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

的东西
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 脚本是否正确?

【问题讨论】:

    标签: php sql code-injection sql-delete


    【解决方案1】:

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

    【讨论】:

    • 但是如果有人把它设为空,所以他们没有重定向然后关闭然后 sql ,,,,example,,,, "; 删除.....这会工作吗?跨度>
    • 如果我没看错,它们会在 intval() 返回 false 时被重定向,这意味着解析的数字要么不正确,要么根本不是数字。所以即使他们不输入任何内容 intval() 仍然会返回 false。
    • 完美,我从来不确定我是否能够弄清楚它背后的逻辑!我制作了一个成功的非 SQL 可注入脚本!耶。管理员和用户共享同一个页面也很酷:)
    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多