mysql - 推进/Symfony 1.4 : combine securely custom sql subquery with criteria

标签 mysql symfony-1.4 criteria propel mysql-real-escape-string

我想将自定义 sql 子查询插入到常见的 Propel 标准中。子查询包含用户输入,因此必须对这些输入进行转义。我怎样才能实现这一点?

我有这样的东西(简化):

$c = new Criteria();
$c->add(myTablePeer::CUSTOMER_ID, 123);
$c->add... //several other criterions, joins etc.
$subQuery = "(SELECT SUM(id) FROM my_other_table WHERE customer_id = 123) > '[USERINPUT]'";
$c->add("", $subQuery, Criteria::CUSTOM);

所以,当然,这个子查询很容易受到 SQL 注入(inject)的攻击。如何以最佳方式保护此查询?我不能使用 mysqli_real_escape_string(),可以吗?那么只需addslashes() 就可以了?

最佳答案

哈利路亚,我想我找到了解决方案:

Propel::getConnection()->quote($userInput)

这很神奇。一步引用、转义! 所以子查询将是:

$subQuery = "(SELECT SUM(id) FROM my_other_table WHERE customer_id = 123) > ".Propel::getConnection()->quote($userInput);

有人可以验证这是保护输入安全的最佳方法吗?

关于mysql - 推进/Symfony 1.4 : combine securely custom sql subquery with criteria,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541398/

相关文章:

php - 永久删除 symfony 插件

mysql - 选择与不同值匹配的行来检索公共(public)字段

java - Hibernate 分离查询作为标准查询的一部分

java - 从忽略大小写的表中获取不同的值

php - 如何从mysql表中选择包含至少一个大于搜索值的值的所有行?

php - mysql_fetch_row 和 mysql_fetch_array 之间的冲突

php - 交响乐 : sfDoctrineRoute pass additional Parameter

mysql - 如何在 phpMyAdmin (MySQL) 中编写 SP?

mysql - 合并mysql中id的计数总和

view - 如何添加助手来查看助手?