Default Validator
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
Да ладно, ты прогоняешь HTMLPurifier после вадидации? А что ты тогда валидируешь? Размер текста нельзя, меняется, другие валидаторы это какие? не считая другие фильтр
Жду Yii 3!
Re: Default Validator
Хм.. у меня HTMLPurifier всегда в beforeValidate... вроде бы логично)
Что если пурифер вырежет все и останется пустая строка, а поле в валидаторе было обязательным или с минимальной длиной?
Получится, что и валидация прошла и в обязательное поле в БД ничего не записалось)
Что если пурифер вырежет все и останется пустая строка, а поле в валидаторе было обязательным или с минимальной длиной?
Получится, что и валидация прошла и в обязательное поле в БД ничего не записалось)
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
И я том же, все фильтры, изменяющие данные должны быть до валидаторов, иначе валидация не может считаться достоверной. Все кроме 'default' который всегда должен быть в конце, т.к. нам же не надо проверять дефолтное значение выставленное программно.
Но учитывая что список валидаторов можно изменять, например в поведениях, и список не имеет приоритета, то за очередностью всего этого дела не уследить
Но учитывая что список валидаторов можно изменять, например в поведениях, и список не имеет приоритета, то за очередностью всего этого дела не уследить
Жду Yii 3!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Default Validator
HTMLPurifier — очень медленная штука. Процессить поле с ним стоит только после того, как всё отработало и всё валидно, но перед сохранением. Можно, конечно, в beforeSave прописать, но можно и в правила валидации.
Нравится Yii? Давайте сделаем его лучше!.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
как написал мрАртур, пурифаер может удалить все к черту, а валидатор required сработает
Жду Yii 3!
Re: Default Validator
Насчет HTMLPurifier, малость странно что вы искажаете данные перед сохранением.
По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Например если редактор введет с ошибкой:
Пурифайер сохранит в базу:
, и это же редактор получит, когда захочет отредактировать, вместо, того что он ввел.
Естественно , т.к. пурифайер не быстрый, то в кеше такие вещи дополнительно держать.
По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Например если редактор введет с ошибкой:
Код: Выделить всё
<ih>миша</i>
вова
Код: Выделить всё
<p>миша
вова</p>
Естественно , т.к. пурифайер не быстрый, то в кеше такие вещи дополнительно держать.
Yii2 universal module sceleton - for basic and advanced templates
Re: Default Validator
Что это за классика такая? Т.е. сохранять зловредный код в БД и потом надеяться, что ни где не забудешь его обработать? И когда, по твоей логике, нужно использовать медленный HTMLPurifier? При каждом выводе?maleks писал(а):По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Re: Default Validator
Эти вещи уже по 100 раз на форумах пхп программистов обсмокчены. Про то что не надо htmlspecialchars перед сохранением и подобное. А пурифайер - по сути тоже самое, только медленней. Поэтому при выводе брать из кеша.MrArthur писал(а):Что это за классика такая? Т.е. сохранять зловредный код в БД и потом надеяться, что ни где не забудешь его обработать? И когда, по твоей логике, нужно использовать медленный HTMLPurifier? При каждом выводе?maleks писал(а):По классике, данные должны храниться в первоначальном виде, а изменяться уже при выводе.
Как например фильтра друпала работают, все по этой системе.
Данные при сохранении не искажаются.
Зловредного кода не существует, все зависит от того как он интерпретируется. И правильная практика при защите от XSS - защищать при выводе.
Yii2 universal module sceleton - for basic and advanced templates
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Default Validator
Я тоже сохраняю оригинал, чтобы при редактировании его показать в форме.
Нравится Yii? Давайте сделаем его лучше!.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
htmlspecialchars и Purifier, не одно и тоже. Первое действительно перекодирует текст и затрудняет повторное редактировние. Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.
Жду Yii 3!
Re: Default Validator
>Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.
это какие такие опечатки ? Purifier убирает XSS и прочие вещи, ну и конечно стоит помнить что прогонять через Purifier стоит после перекодировки из Markdown и прочего, а не до
это какие такие опечатки ? Purifier убирает XSS и прочие вещи, ну и конечно стоит помнить что прогонять через Purifier стоит после перекодировки из Markdown и прочего, а не до
Re: Default Validator
В том примере, что я выше указал, не особо он поможет редактору, поубивав его труд, если он чего то не так ввел с первого раза.slavcodev писал(а):htmlspecialchars и Purifier, не одно и тоже. Первое действительно перекодирует текст и затрудняет повторное редактировние. Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.
Yii2 universal module sceleton - for basic and advanced templates
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
пропущенные закрывающие теги, считаются опечатками?Skiller писал(а):>Purifier же исправляет ошибки и опечатки редактора, которые наоборот облегчают следующее редактирование.
это какие такие опечатки ? Purifier убирает XSS и прочие вещи, ну и конечно стоит помнить что прогонять через Purifier стоит после перекодировки из Markdown и прочего, а не до
по поводу перекодировки, речь не идет. Речь идет о том что фильтры идут всегда перед валидаторами, что исключений нет. Сначало фильтры изменяют значения атрибутов в нужное формат, потом валидаторы проверяют подходят ли эти значения для сохранения.
Порядок же фильтров между собой, и порядок валиадторов, нужно выставлять по необходимости.
Жду Yii 3!
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
И зачем в твоем примере сохранять труд редактора, если он неверен?maleks писал(а):В том примере, что я выше указал, не особо он поможет редактору, поубивав его труд, если он чего то не так ввел с первого раза.
Жду Yii 3!
Re: Default Validator
так он увидит что выглядит не как задумывалось, отредактировать нажмет и все исправит в момент. И не обнаружит что в его вверстке уже новая песня, непонятно что произошло.slavcodev писал(а):И зачем в твоем примере сохранять труд редактора, если он неверен?maleks писал(а):В том примере, что я выше указал, не особо он поможет редактору, поубивав его труд, если он чего то не так ввел с первого раза.
Yii2 universal module sceleton - for basic and advanced templates
Re: Default Validator
>пропущенные закрывающие теги, считаются опечатками?
по поводу перекодировки, речь не идет. Речь идет о том что фильтры идут всегда перед валидаторами, что исключений нет. Сначало фильтры изменяют значения атрибутов в нужное формат, потом валидаторы проверяют подходят ли эти значения для сохранения.
Порядок же фильтров между собой, и порядок валиадторов, нужно выставлять по необходимости.
Я про то что Purifier нужен не для закрывания тегов а для недопущения security issues, неправильное его использование может привести к глупы последствиям
по поводу перекодировки, речь не идет. Речь идет о том что фильтры идут всегда перед валидаторами, что исключений нет. Сначало фильтры изменяют значения атрибутов в нужное формат, потом валидаторы проверяют подходят ли эти значения для сохранения.
Порядок же фильтров между собой, и порядок валиадторов, нужно выставлять по необходимости.
Я про то что Purifier нужен не для закрывания тегов а для недопущения security issues, неправильное его использование может привести к глупы последствиям
Re: Default Validator
Я нашёл применение 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],
];
}
Re: Default Validator
Только хренас два он обнуляет.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Default Validator
Жду Yii 3!