我们在网页上扫描了漏洞。我们在以下查询中收到了一个关键的盲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));
答案 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 Injection和Blind SQL Injection
答案 3 :(得分:-2)
首先关闭转义字符串。
$first_name = $_POST["first-name"];
$safe_variable = mysql_real_escape_string($first-name);