php - 为什么不应该将 CONCAT() 用于静态字符串文字?

标签 php mysql sql-injection

所以你有

$sql = "SELECT * FROM `table` WHERE `some_text_field` LIKE CONCAT('%', ?, '%')";
$stmt = $dbh->prepare($sql);
$stmt->execute(array($_POST['badies_code']));

看着另一个问题,我发现这会引起安全问题,但为什么呢?

我发现了这个问题,一个被否决的答案和一个被赞成的评论,这就是我问的原因

评论说

This is not the correct way to do this. You should not use CONCAT() for three static string literals, as it opens you up to a specific type of SQL injection (i forget the name). – Theodore R. Smith

PHP PDO prepared statement -- mysql LIKE query

最佳答案

记住不存在的注入(inject)的名称将是一项相当复杂的任务。

concat() 与准备好的语句一起使用没有任何问题。

关于php - 为什么不应该将 CONCAT() 用于静态字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740375/

相关文章:

javascript - 使用简单的 JS 仅验证两个文本框上的字符和数字

php - 如何在 PHP 中添加元素 2 关联数组?

php - 使用 MySQL 表中的数据动态填充 div

php - 如何使用户注册能够捕获附加字段及其值

php - 在 Zend Framework 2 中使用 mysql 用户变量

php - Doctrine (symfony) YAML schema/fixture 约束问题

php - Woocommerce 中的 Ajaxify header 购物车项目计数

MySQL 准备好的语句我还需要使用 mysql_escape_string

c# - 防止 SELECT 语句中的 SQL 注入(inject)

mysql - 通过 SQL 注入(inject)登录?