2013-10-20 18 views
1

对不起,我之前曾经提过一个类似的问题,但我修正了代码(我认为),以使其完全可以证明管理员和!常规用户帐户。

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是否正确?

回答

1

我没有检查你的整个脚本,但在关于INTVAL,它应该是所有你需要使它安全,因为它只是一个用户ID ....

+0

但如果有人是为了让它空,所以他们没有重定向,然后关闭然后关闭然后sql ,,,,例如,,,,“;删除.....将工作? – user2551856

+0

如果我正确读取,他们重定向时,intval()返回false,这意味着数字解析是不正确的,或者它根本不是数字,所以即使它们什么也不输入intval()仍然会返回false – NullBy7e

+0

完美的是,我从来不知道我能够解决它背后的逻辑!一个成功的非SQL注入脚本!同时它的确很酷,管理员和用户共享相同的页面:) – user2551856