Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这段使用预处理语句的mysqli代码对SQL注入安全吗?_Php_Mysql_Sql_Mysqli_Prepared Statement - Fatal编程技术网

Php 这段使用预处理语句的mysqli代码对SQL注入安全吗?

Php 这段使用预处理语句的mysqli代码对SQL注入安全吗?,php,mysql,sql,mysqli,prepared-statement,Php,Mysql,Sql,Mysqli,Prepared Statement,我使用准备好的语句来防止sql注入。我想知道我是否处于正确的轨道上,以防止使用prepared语句进行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=

我使用准备好的语句来防止sql注入。我想知道我是否处于正确的轨道上,以防止使用prepared语句进行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代码和预处理语句是否可以阻止sql注入的事情。
另外,请确认我正在使用用户输入作为准备语句的参数,而不是通过将字符串连接在一起来构建SQL命令。

看起来不错。为什么要使用$\u请求。它有一些弱点。改用$\u POST。您的代码对于SQL注入肯定很酷

,SQL注入看起来很好,并且正确地使用了prepared语句。“另外,请确认我正在使用用户输入作为prepared语句的参数,而不是通过将字符串连接在一起来构建SQL命令。”-已确认。虽然可以避免SQL注入,这并不意味着你不应该继续检查你的输入变量(例如数字应该是数字),特别是当你使用$从一个发布的表单中请求值时(如果表单已发布,那么您应该确切地知道$_POST和$_GET中的内容以及$_COOKIE中的内容,etcI在PHP网站上找不到任何内容,说明mysqli_stmt_bind_参数实际上正在清理参数,就像mysqli_real_escape一样。你们确定它正在清理输入吗?它正在处理转义,并在qu中包装。)字符串值的OTE…它没有净化,因为您可以在字符串值中嵌入标记等…您仍然需要自己防止这种情况:数据库不知道您是否想要

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);
    }
}