【发布时间】:2012-03-20 12:04:24
【问题描述】:
我知道使用像 Doctrine2 这样的 ORM 来构建查询是安全的,这意味着默认情况下会转义参数。
但我猜这并不是那么明显当使用文字时并且当这个文字直接来自查询字符串时:
$builder = $this->getRepository()->createQueryBuilder('e');
$request = $this->getRequest();
// Loop each allowed filter field and check if exists in $request
foreach($this->getFilterFields() as $filter) :
// Skip falsy values in $request
if(!$value = $request->get($filter)) continue;
// Add OR LIKE %$value% where $value is GET paramter
$like = $builder->expr()->literal("%$value%");
$builder->orWhere($builder->expr()->like("e.$filter", $like));
endforeach;
是否应该以某种方式提高安全性?
【问题讨论】:
标签: sql doctrine symfony doctrine-orm