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

用户名
$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','[email protected]');

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;
}
vinoth.kumar

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

预备语句使用绑定参数。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PDO准备好的语句是否足以防止SQL注入?

使用 PDO 准备好的语句和 htmlspecialchars 是否足以防止 XSS 和 SQL 注入?

准备好的语句如何防止SQL注入攻击?

准备好的语句会阻止sql注入攻击吗?

即使在准备好的语句上也可以进行SQL注入

如何在Java构建查询,以防止SQL注入用事先准备好的声明

在准备好的语句中,setString()是防止SQL注入的唯一有用的方法吗?

使用Order By的准备好的语句来防止SQL注入Java

在没有准备好的语句的情况下防止SQL注入/ SQLite / C ++

用事先准备好的声明,以防止SQL注入创建一个从用户输入数据库

AJAX的带有准备好的语句的发布对SQL注入安全吗?

使用准备好的语句进行 SQL 注入

准备好的SQL语句可以由数据库重写吗?

如果所有 SQL 查询都应该准备好以防止 SQL 注入,为什么语法允许非准备查询?

准备好的SQL语句未“准备”

准备语句的正确顺序以防止用户输入的SQL注入

创建准备好的SQL语句,其中SQL语句中的值已经相等(SQL注入)

SQL 准备好的语句。PHP

我需要为这个准备好的语句使用 $stmt = $conn->prepare 吗?

这个简单的字符串转义可以防止任何SQL注入吗?

Cassandra CQL准备好的语句比未准备好的语句慢吗?

Kotlin暴露:如何创建准备好的语句或避免SQL注入?

我们可以在准备好的语句(PostgreSQL)中使用DDL命令吗?

提取准备好的语句

准备好的语句会明显降低程序速度吗?

选择使用mysqli准备好的语句吗?

是否可以开箱即用地启用准备好的语句?

传递键值对还可以防止SQL注入攻击吗?

将可选的 SQL 传递给准备好的语句