1

我们在我们的网页上进行了漏洞扫描。我们在以下查询中收到了关键的盲 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

3 回答 3

0

我对“SQL盲注”这个概念并不熟悉,但据我了解,它的工作原理和我们都知道的通常的SQL代码注入一样(只是结果的解释不同)。

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

于 2013-08-19T15:22:21.110 回答
0

如果这是您在此处发布的真实代码,则没有注入漏洞。既不是“盲人”,也不是任何其他类型。

此代码无需改进。

您需要为自己找到一个更好的扫描仪,它不会引发误报。

于 2013-08-19T16:29:50.350 回答
-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

于 2013-08-19T15:13:51.260 回答