防止盲注SQL注入

时间:2013-08-19 14:54:44

标签: php mysql sql-injection

我们在网页上扫描了漏洞。我们在以下查询中收到了一个关键的盲SQL注入。我正在使用准备好的陈述。我还能做些什么来阻止SQL注入攻击?请告诉我。这是我的示例代码。我很感激任何建议。

$first_name = $_POST["first-name"];
$middle_name = $_POST["middle-name"];
$last_name = $_POST["last-name"];

$qry = $pdo_conn->prepare('INSERT INTO table1(first_name, last_name, middle_initial) VALUES (?, ?, ?)');
$qry->execute(array($first_name, $last_name, $middle_name));

4 个答案:

答案 0 :(得分:0)

我不熟悉“盲SQL注入”的概念,但据我所知,它的工作原理就像我们所知道的通常注入的SQL代码一样(只是对结果的解释不同)。 / p>

由于您使用的是预准备语句,所有可能有害的SQL代码都将被转义,我不担心这个警告,可能是误报。免责声明:我不是律师安全顾问。

答案 1 :(得分:0)

IF 这是您在此处发布的真实代码,没有注入漏洞。无论是“盲目”还是任何其他类型。

此代码无需改进。

你需要找到一个更好的扫描仪,不会产生误报。

答案 2 :(得分:-1)

你也可以这样做:

$qry = $pdo_conn->prepare('INSERT INTO table1(first_name, last_name, middle_initial) VALUES (?, ?, ?)');

 $qry->bindParam(1,$first_name);
 $qry->bindParam(2,$middle_name);
 $qry->bindParam(3,$last_name);

$first_name = strip_tags(mysqli_real_escape_string($qry,$_POST["first-name"]));
$middle_name = strip_tags(mysqli_real_escape_string($qry,$_POST["middle-name"]));
$last_name = strip_tags(mysqli_real_escape_string($qry,$_POST["last-name"]));

$qry->execute();

有关Blind sql注入的更多帮助,请参阅:Sql InjectionBlind SQL Injection

答案 3 :(得分:-2)

首先关闭转义字符串。

$first_name = $_POST["first-name"];
$safe_variable = mysql_real_escape_string($first-name);