【发布时间】: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