这个使用预处理语句的mysqli代码是否可以安全地防止SQL注入?

时间:2014-01-09 15:58:25

标签: php mysql sql mysqli prepared-statement

我正在使用预准备语句来阻止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命令。

1 个答案:

答案 0 :(得分:2)

看起来很好。你为什么要使用$ _REQUEST。它有一定的漏洞。请改用$ _POST。您的代码对SQL注入绝对很酷