Как сделать обработку $_GET

Подскажите, как сделать правильную обработку массива $_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.

Еще можно подключить фильтр http://andrey.opeyki…yii-xss-filter/

Спасибо, метод validate вполне устраивает.