Валидация небезопасных данных

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
igorek7-7
Сообщения: 3
Зарегистрирован: 2016.12.22, 17:49

Валидация небезопасных данных

Сообщение igorek7-7 » 2016.12.22, 18:16

Приветствую всех форумчан.
Помогите разобраться с валидацией данных string. Есть поле textarea которая принимает строковые данные, соответственно в модели прописаны правила валидации

Код: Выделить всё

public function rules()
    {
        return [
            [['user_id', 'user_username', 'comment'], 'required'],
            [['comment'], 'string', 'max' => 500],
        ];
    }
В документации указанно, что правило "string" пропускает корректную строку. Как я понимаю - корректная строка состоит из текстовых символов, цифр и знаков препинания. Но данное поле у меня сжирает и html теги и javascript и php.
Вопрос: может я что-то не так понимаю? Как безопасно и самое главное правильно организовать данный процесс. Мудрить правило "match" с регулярным выражением или при отображении данных использовать Html::encode(string) или есть другие подходы.

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Валидация небезопасных данных

Сообщение Onotole » 2016.12.22, 19:13

StringValidator проверяет только на то стока данные или нет. Ну и кол-во символов, если указано.
Если хотите убирать теги, то нужно фильтровать. Например так

Код: Выделить всё

['text', 'string', 'max' => 500],
['text', 'filter', 'filter' => 'strip_tags'],
// Или
['text', 'filter', 'filter' => function($value) {
    return strip_tags($value);
}],
 

igorek7-7
Сообщения: 3
Зарегистрирован: 2016.12.22, 17:49

Re: Валидация небезопасных данных

Сообщение igorek7-7 » 2016.12.22, 21:44

Ну да, точно, все работает спасибо большое. Надо внимательней изучать документацию.


Ответить