1

Тема: sql инъекция

На symfony 1.2 propel надо сделать order by field.

При

$c->addDescendingOrderByColumn( sprintf("FIELD(%s,%s)", blaaaPeer::ID, $w),

где $w - пользовательский текст проходят sql инъекции, а при

$c->add(blaaaPeer::ID, '%'.$w.'%',Criteria:LIKE)

не проходят.

В настройках

escaping_strategy: on 
escaping_method: ESC_SPECIALCHARS 

Как сделать чтобы $w был безопасен в первом случае? Спасибо!

2

Re: sql инъекция

banab пишет:

Как сделать чтобы $w был безопасен в первом случае? Спасибо!

Для начала хорошо бы понять, что пытаться наебать Пропел и подсовывать ему в метод место названия поля кусок сформированного sql-запроса - это плохая идея. Даже если она работает, проверена на совместимость и оттестирована - это костыль. А на счет фильтрации логично было бы посмотреть в то, как в Criteria фильтруется второй параметр метода add(), и сделать так же. Искать древнюю версию Пропела, чтобы посмотреть, как оно там, сейчас уже никто не станет.