这个准备好的语句可以防止SQL注入吗?

这个问题已经在这里有了答案:            >            Are PDO prepared statements sufficient to prevent SQL injection?                                    7个

$string = trim($_POST['string'])
$sql = "INSERT INTO table (string) VALUES(:string)";
$query = $db->prepare($sql);
$query->execute(array(
    ":string" => $string
));

代码块可以阻止sql注入吗?

编辑:
这是我与数据库的连接.此代码的字符集是否允许执行以上代码块并防止sql注入?

//database credentials
define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','');
define('dbnAME','table');

//application address
define('DIR','http://localhost/');
define('SITEEMAIL','noreply@example.com');

try {

//create PDO connection 
$db = new PDO("MysqL:host=".DBHOST.";port=3306;dbname=".dbnAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

} catch(PDOException $e) {
//show error
echo 'Looks like server is down please check back later';
exit;
}

解决方法:

是的,它将阻止sql注入,因为

预备语句使用绑定参数.

预处理语句不会将变量与sql字符串组合在一起,因此攻击者无法修改sql语句.

预处理语句将变量与已编译的sql语句结合在一起,这意味着sql和变量是分开发送的,并且变量仅被解释为字符串,而不是sql语句的一部分.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...