Default Validator

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

Да ладно, ты прогоняешь HTMLPurifier после вадидации? А что ты тогда валидируешь? Размер текста нельзя, меняется, другие валидаторы это какие? не считая другие фильтр
Жду Yii 3!
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: Default Validator

Сообщение Faenir »

Хм.. у меня HTMLPurifier всегда в beforeValidate... вроде бы логично)
Что если пурифер вырежет все и останется пустая строка, а поле в валидаторе было обязательным или с минимальной длиной?
Получится, что и валидация прошла и в обязательное поле в БД ничего не записалось)
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

И я том же, все фильтры, изменяющие данные должны быть до валидаторов, иначе валидация не может считаться достоверной. Все кроме 'default' который всегда должен быть в конце, т.к. нам же не надо проверять дефолтное значение выставленное программно.

Но учитывая что список валидаторов можно изменять, например в поведениях, и список не имеет приоритета, то за очередностью всего этого дела не уследить :(
Жду Yii 3!
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Default Validator

Сообщение samdark »

HTMLPurifier — очень медленная штука. Процессить поле с ним стоит только после того, как всё отработало и всё валидно, но перед сохранением. Можно, конечно, в beforeSave прописать, но можно и в правила валидации.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

как написал мрАртур, пурифаер может удалить все к черту, а валидатор required сработает
Жду Yii 3!
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Default Validator

Сообщение maleks »

Насчет HTMLPurifier, малость странно что вы искажаете данные перед сохранением.
По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Например если редактор введет с ошибкой:

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

<ih>миша</i>
вова
Пурифайер сохранит в базу:

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

<p>миша
вова</p> 
, и это же редактор получит, когда захочет отредактировать, вместо, того что он ввел.
Естественно , т.к. пурифайер не быстрый, то в кеше такие вещи дополнительно держать.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: Default Validator

Сообщение Faenir »

maleks писал(а):По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Что это за классика такая? Т.е. сохранять зловредный код в БД и потом надеяться, что ни где не забудешь его обработать? И когда, по твоей логике, нужно использовать медленный HTMLPurifier? При каждом выводе? :?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Default Validator

Сообщение maleks »

MrArthur писал(а):
maleks писал(а):По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Что это за классика такая? Т.е. сохранять зловредный код в БД и потом надеяться, что ни где не забудешь его обработать? И когда, по твоей логике, нужно использовать медленный HTMLPurifier? При каждом выводе? :?
Эти вещи уже по 100 раз на форумах пхп программистов обсмокчены. Про то что не надо htmlspecialchars перед сохранением и подобное. А пурифайер - по сути тоже самое, только медленней. Поэтому при выводе брать из кеша.
Как например фильтра друпала работают, все по этой системе.
Данные при сохранении не искажаются.

Зловредного кода не существует, все зависит от того как он интерпретируется. И правильная практика при защите от XSS - защищать при выводе.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Default Validator

Сообщение samdark »

Я тоже сохраняю оригинал, чтобы при редактировании его показать в форме.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

htmlspecialchars и Purifier, не одно и тоже. Первое действительно перекодирует текст и затрудняет повторное редактировние. Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.
Жду Yii 3!
Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Default Validator

Сообщение Skiller »

>Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.

это какие такие опечатки ? ;) Purifier убирает XSS и прочие вещи, ну и конечно стоит помнить что прогонять через Purifier стоит после перекодировки из Markdown и прочего, а не до :)
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Default Validator

Сообщение maleks »

slavcodev писал(а):htmlspecialchars и Purifier, не одно и тоже. Первое действительно перекодирует текст и затрудняет повторное редактировние. Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.
В том примере, что я выше указал, не особо он поможет редактору, поубивав его труд, если он чего то не так ввел с первого раза.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

Skiller писал(а):>Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.

это какие такие опечатки ? ;) Purifier убирает XSS и прочие вещи, ну и конечно стоит помнить что прогонять через Purifier стоит после перекодировки из Markdown и прочего, а не до :)
пропущенные закрывающие теги, считаются опечатками?
по поводу перекодировки, речь не идет. Речь идет о том что фильтры идут всегда перед валидаторами, что исключений нет. Сначало фильтры изменяют значения атрибутов в нужное формат, потом валидаторы проверяют подходят ли эти значения для сохранения.

Порядок же фильтров между собой, и порядок валиадторов, нужно выставлять по необходимости.
Жду Yii 3!
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

maleks писал(а):В том примере, что я выше указал, не особо он поможет редактору, поубивав его труд, если он чего то не так ввел с первого раза.
И зачем в твоем примере сохранять труд редактора, если он неверен?
Жду Yii 3!
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Default Validator

Сообщение maleks »

slavcodev писал(а):
maleks писал(а):В том примере, что я выше указал, не особо он поможет редактору, поубивав его труд, если он чего то не так ввел с первого раза.
И зачем в твоем примере сохранять труд редактора, если он неверен?
так он увидит что выглядит не как задумывалось, отредактировать нажмет и все исправит в момент. И не обнаружит что в его вверстке уже новая песня, непонятно что произошло.
Yii2 universal module sceleton - for basic and advanced templates
Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Default Validator

Сообщение Skiller »

>пропущенные закрывающие теги, считаются опечатками?
по поводу перекодировки, речь не идет. Речь идет о том что фильтры идут всегда перед валидаторами, что исключений нет. Сначало фильтры изменяют значения атрибутов в нужное формат, потом валидаторы проверяют подходят ли эти значения для сохранения.
Порядок же фильтров между собой, и порядок валиадторов, нужно выставлять по необходимости.

Я про то что Purifier нужен не для закрывания тегов а для недопущения security issues, неправильное его использование может привести к глупы последствиям
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Default Validator

Сообщение yiijeka »

Я нашёл применение default валидатору :)
Человек выставляет записи тип, в зависимости от типа ему выводятся разные формы и разная доступность полей. Так вот нужно быть уверенным, чтобы не доступные поля были обнулены:

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

public function rules()
    {
        return [
            [['type'], 'in', 'range' => array_keys($this->operators)],
           
            [['ipNum'], 'in', 'range' => [2, 254, 1], 'on' => ['bel', 'mts',]],
            [['ipNum'], 'default', 'value' => null, 'on' => ['vel', 'corp',]],

            [['ipAddress'], 'default', 'value' => null, 'on' => ['bel', 'mts', 'vel',]],
            [['ipAddress'], 'string', 'max' => 255, 'on' => ['corp',]],

            [['transDataOperator'], 'string', 'max' => 255],
        ];
    } 
Хотя в такой структуре правил, беглым взглядом трудно, что либо понять...ох уж эти сценарии.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Default Validator

Сообщение yiijeka »

Только хренас два он обнуляет.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Default Validator

Сообщение slavcodev »

:lol:
Жду Yii 3!
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Default Validator

Сообщение yiijeka »

Ответить