对不起,我之前曾经提过一个类似的问题,但我修正了代码(我认为),以使其完全可以证明管理员和!常规用户帐户。
admin和用户共享成员列表页面。所不同的是:管理员把事情像
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不等于“”检查用户的排名(管理员或常规) 如果他经常将他移动到索引页并停止脚本!
普通用户的arent应该编辑ID声明...如果他们这样做......这意味着他们在黑客或某种形式的目标,这样做....
现在到下一部分
$userID = intval($_GET['id']);
if (!$userID) {
header('Location: index.php');
die();
}
这个basicaly声明intval所以id是唯一的!一个数字,这个块之类的东西
'; DELETE FROM users WHERE user_id=19;
下一个...一个额外的安全功能,如果没有用户id重定向和退出
FINNALLY,
$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
如果脚本不安全的演示用户...怎么办我做到了吗?
这也是安全的管理员?
我的sql脚本中的url是否正确?
但如果有人是为了让它空,所以他们没有重定向,然后关闭然后关闭然后sql ,,,,例如,,,,“;删除.....将工作? – user2551856
如果我正确读取,他们重定向时,intval()返回false,这意味着数字解析是不正确的,或者它根本不是数字,所以即使它们什么也不输入intval()仍然会返回false – NullBy7e
完美的是,我从来不知道我能够解决它背后的逻辑!一个成功的非SQL注入脚本!同时它的确很酷,管理员和用户共享相同的页面:) – user2551856