Подскажите, как сделать правильную обработку массива $_GET для каждого контроллера, во избежание инъекций.
Или можно положится на rules() в ActiveRecord?
Заранее спасибо!
Подскажите, как сделать правильную обработку массива $_GET для каждого контроллера, во избежание инъекций.
Или можно положится на rules() в ActiveRecord?
Заранее спасибо!
Если вы присваиваете модели значения атрибутов из массива $_GET или $_POST, а затем вызываете метод save(), то волноваться не о чем. При использовании метода findByPk($_GET[‘key’]) тоже.
А вот при построении SQL запросов вручную нужно быть внимательным и избегать непосредственной подстановки данных в запрос, т.е. вместо
$db->createCommand("SELECT ... WHERE `name` = ".$_GET['name'])->execute();
следует использовать
$db->createCommand("SELECT ... WHERE `name` = :name")->execute(array(':name'=>$_GET['name']));
Конечно много и других случаев, но общая идея, надеюсь, ясна
P.S. Что вы имеете в виду под "положиться на rules()"? Это правила валидации, применяемые при вызове метода validate(), который в свою очередь обычно вызывается неявно при использовании метода save(). В этом случае, как я написал выше, опасаться нечего.
я правильно понял, если использовать params, то yii сам берет на себя обработку от всяких инъекций ?
В этом случает отрабатывает PDO.
Спасибо, метод validate вполне устраивает.