php - 转义 pdo 查询,有必要吗?

标签 php mysql pdo

我今天的问题是。我需要在我的脚本中转义 PDO 吗?

$columns = implode(", ",$column);
$query = ''.$query.' '.$columns.' FROM '.$table.'';
$dbh_query = $dbh->prepare($query);
$dbh_query->execute();
$dbh_querys = $dbh_query->fetchAll();

return $dbh_querys;

整个脚本可以在。 https://github.com/joshuahiwat/crud/blob/master/control/query_connector.class.php

谁能解释一下为什么我此时需要逃生或者为什么不需要。

非常感谢您的来信!

最佳答案

查询的动态部分是表名和列名。您不能对查询的这些部分使用绑定(bind)函数。绑定(bind)函数只能用于查询的部分,否则这些部分将是 SQL 查询中的简单值。像数字常量、带引号的字符串或带引号的日期文字。

要避免来自动态表名或列名的 SQL 注入(inject),您有以下选择:

  • 使用您类(class)中预定义的值,或者以其他方式确定是安全的。不要使用来自用户或任何其他来源的外部内容。
  • 使用转义。请注意,函数 PDO::quote() 不会执行您需要的表名或列名转义。
  • 创建已知表名和相应表的列名的“白名单”,并将动态输入与白名单进行比较。如果它与白名单不匹配,则引发错误。

关于php - 转义 pdo 查询,有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282397/

相关文章:

php - Wordpress - 为通讯作者添加两个 Adsense 帐户

php - 异或符号表示?

php - 如何从 Controller 方法验证返回自定义错误消息

mysql - 使用 MySql 中的 if 语句打印带有条件约束的新列

php - 在php中将utf8mb4字符转换为utf8

c# - 使用 Entity Framework 添加详细信息行

php - 你能告诉我我博客的这段代码有什么问题吗?

php - 如果插入数据库成功 echo

php - 将 PDO 结果集转换为对象数组

MySQL PDO删除超过2天的用户,删除其他表中具有user_id的内容