我正在使用预准备语句来阻止sql注入。我想知道我是否在正确的轨道,以防止使用预准备语句注入SQL。下面是一个示例html表单。
<form action="" method="post" name="ff" id="ff">
<input type="text" name="input1">
<input type="text" name="input2">
<input type="submit" value="submit" name="submit">
</form>
现在提交上面的表格时,我正在使用以下PHP代码和准备好的语句。
if(isset($_POST["submit"]))
{
$query = "insert INTO table (input1,input2) VALUES (?,?)";
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_bind_param($stmt, "ss", $_REQUEST["input1"], $_REQUEST["input2"]);
$result = mysqli_stmt_execute($stmt);
if ( false===$result ) {
die('Statement failed: '.$stmt->error);
}
}
请告诉我,如果上面的PHP代码与准备好的声明是否正常,以防止SQL注入的事情。 另外请确认我正在使用用户输入作为预准备语句的参数,而不是通过将字符串连接在一起来构建SQL命令。
答案 0 :(得分:2)
看起来很好。你为什么要使用$ _REQUEST。它有一定的漏洞。请改用$ _POST。您的代码对SQL注入绝对很酷