Yii2, как корректно бороться с XSS?

Дело такое:
Допустим, у меня есть модель SignupForm, в ней прописаны правила, мол логин и пароль обязательны, сделать им trim, и т.д. и т.п., но вот одна помеха есть:
При вводе кода <скрипт>alert("hacked");скрипт> в одно из полей (допустим в about) - он прямо попадет в бд, и потом когда будем выводить это поле этого пользователя, то на его страничке при заходе к нему будет выскакивать этот алерт. Я решал до сих пор эту задачу очень по нубски, во всех вьюшках я прописывал Html::encode() каждому параметру (что капец прямо как рутинно). Но я более чем уверен, что можно просто еще при вводе данных в самой модели SignupForm сделать так, чтобы эти данные попадали в бд уже безопасными. Как это сделать профессионально? Прописать валидатор, возможно? Хотелось бы корректный пример, спасибо
  • Вопрос задан
  • 2140 просмотров
Решения вопроса 1
@Mi7teR
Senior Jquery engineer
public function rules()
    {
        return [
                     ['field1','field2'],'filter','filter'=>'\yii\helpers\HtmlPurifier::process']
        ];
    }

www.yiiframework.com/doc-2.0/yii-helpers-htmlpurif...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
решал до сих пор эту задачу очень по нубски, во всех вьюшках я прописывал Html::encode()

Почему же по-нубски? Лол. Официальная документация Yii гласит о том, что все данные, которые были получены от пользователя, в обязательном порядке должны быть выведены через HTML::encode(). Почему? Там об этом тоже написано.

Но я более чем уверен, что можно просто еще при вводе данных в самой модели SignupForm сделать так, чтобы эти данные попадали в бд уже безопасными.

валидатор

Так, извините, а что вам мешает парсить введённые данные и чистить от недопустимых для вас символов, непосредственно перед вставкой в БД?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы