此代码是否受到SQL注入的保护?

时间:2016-05-25 01:58:24

标签: php mysql sql-injection

我对新的PHP命令不是很熟悉,所以我想与你联系,看看下面的代码是否可以防止SQL注入?

$mysqli = new mysqli($server,$user , $password, $db_name);
$stmt1 = $mysqli->prepare("insert into $db_table (request_date, from_city, from_country, to_city, to_country, travel_date, return_date, minus, plus, currency) 
                                        values(?,?,?,?,?,?,?,?,?,?)");

$date = date('Y-m-d H:i:s');
$stmt1->bind_param("ssssssssss",$date,
                                $_POST['from_city'], 
                                $_POST['from_country'], 
                                $_POST['to_city'], 
                                $_POST['to_country'], 
                                $_POST['travel_date'], 
                                $_POST['return_date'], 
                                $_POST['minus'], 
                                $_POST['plus'], 
                                $_POST['currency']
                    );

$stmt1->execute();

基本上,脚本从表单接收发布数据,将它们记录到数据库中,然后将它们提交到另一个脚本以执行实际搜索(在第三方网站上)。

1 个答案:

答案 0 :(得分:4)

是的,准备好的语句对SQL注入是安全的,因为它们不被解释为SQL查询的一部分 - 你可以在那里拥有任何东西,它不会执行命令。

也就是说,您可能想要进行一些验证,以确保您接受的数据有意义。垃圾进垃圾出。例如,您不想保存无效的日期。