2
私はのようなORMを使ってDoctrine2クエリを作成することは安全です、デフォルトではパラメータがエスケープされることを意味します。この小さなDoctrine2動的SQLは注射に十分安全ですか?
しかし、私はリテラルを使用している場合、これはそれほど明らかではないことを推測していると、このリテラルは、クエリ文字列から直接来るとき:
$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;
は、安全性が何らかの方法で改善されるべきか?
ありがとうございました。はい、$ this-> getFilterFields()はすべての有効な検索フィールドをリストするので、有効でないargumetnは無視されます。 – Polmonino