0

请查看包含我的 members.php 文件的pastebin 。

这个想法是:

管理员和普通用户在同一页面上查看成员列表....

唯一的区别是管理员可以看到更多功能,例如

edit | Delete | Make admin

所以我想我在通过 url 解析用户的删除$_GETisset

我试图通过重定向普通用户并退出脚本一次来使此代码可注入反 sql ?id=!等于 ””

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

我是否应该添加一个像 preg 这样的安全功能,如果 id= 除了数字之外的任何内容,它将停止脚本?

这甚至安全吗?

这是我的免费虚拟主机上的代码。

1334.3owl.com/members.php?id=

注意,如果你必须

1334.3owl.com/members.php

id 没有设置,我看到一个错误

Notice: Undefined index: id in C:\Users\Max\Documents\xampp\htdocs\hope\members.php on line 78

希望你们能帮帮我!

注意:页面有功能

protect();

已启用,因此您需要先登录才能查看该页面

我创建了两个模拟账户:

demouser
demopass

demouser2
thisisapassword

请登录然后转到链接

4

1 回答 1

1

使用intval()

$userID = intval($_GET['id']);

这将保证 $userID 将是一个整数,因此不可能进行 SQL 注入。为了增加安全性,您应该确保 $userID 非零:

if (!$userID)
    die();
于 2013-10-20T16:05:43.337 回答