ActiveForm и безопасность
ActiveForm и безопасность
Доброго дня.
Столкнулся с проблемой: используя ActiveForm создаю набор полей формы ($form->field($model, 'field_name')->label(''); и после сохранения "небезопасных" данных в базу эти данные "срабатывают" при отображении формы (типа "><script>alert('Get his coockies');</script><", с кавычками).
Если бы я "вручную" создавал элементы формы, я бы использовал <input ... value="<?= Html::escape($model->field_name) ?>">.
На чистом PHP - htmlspecialchars, в Smarty - {$model->field_name|escape}.
А что делать с полями ActiveForm? Подскажите, пожалуйста.
Столкнулся с проблемой: используя ActiveForm создаю набор полей формы ($form->field($model, 'field_name')->label(''); и после сохранения "небезопасных" данных в базу эти данные "срабатывают" при отображении формы (типа "><script>alert('Get his coockies');</script><", с кавычками).
Если бы я "вручную" создавал элементы формы, я бы использовал <input ... value="<?= Html::escape($model->field_name) ?>">.
На чистом PHP - htmlspecialchars, в Smarty - {$model->field_name|escape}.
А что делать с полями ActiveForm? Подскажите, пожалуйста.
- rodion_zlobin
- Сообщения: 207
- Зарегистрирован: 2017.01.11, 16:33
Re: ActiveForm и безопасность
Html::encode() используйте
Re: ActiveForm и безопасность
Это, конечно, спасибо... Но где его использовать-то? Всё ж инкапсулировано в вызов вида:
$form->field($model, 'field_name')->label('')
Соответственно, метод field интересует только экземпляр модели и название поля, всё остальное происходит внутри. И там нет никаких спасительных действий??
$form->field($model, 'field_name')->label('')
Соответственно, метод field интересует только экземпляр модели и название поля, всё остальное происходит внутри. И там нет никаких спасительных действий??
- onmotion
- Сообщения: 31
- Зарегистрирован: 2015.12.25, 16:03
- Откуда: Санкт-Петербург
- Контактная информация:
Re: ActiveForm и безопасность
Код: Выделить всё
$form->field($model, 'field_name')->textInput()->label(false)
Re: ActiveForm и безопасность
Какая-то дичь. Значения атрибутов кодируются из коробки при использовании ActiveForm, yii\helpers\Html и прочего. При выводе данных кодировать их - ваша задача. Если вы про ActiveField::label(), то там да, ничего не кодируется, о чем есть замечание в доках.
- rodion_zlobin
- Сообщения: 207
- Зарегистрирован: 2017.01.11, 16:33
Re: ActiveForm и безопасность
А как в label значение то попадает? Может просто вывод переменной где-то не заметили
Re: ActiveForm и безопасность
Ребяты, лейбл ПУСТ. Ломаются поля ввода <imput ... value=""> <script>alert('I am bad code');</script> ">. Вот всё, что между value=" и "> - вываливается как есть...
onmotion, в php "" == false вернёт true, короче не принципиально.
onmotion, в php "" == false вернёт true, короче не принципиально.
Re: ActiveForm и безопасность
1) Ничего там не вываливается 100%. Приведите код, а не пишите бред.
2) В php есть тождественные (не)равенства...
Re: ActiveForm и безопасность
Люди, члены core-team, все остальные - то же, простите мне мою панику!!!
Да, первый же ответ был в цель... В лейаут грузится компонент, в представлении которого выводится значение из того самого поля и там нет Html::escape... Уже поправил. Сразу не заметили потому что для тестирования использовали скрипт переводящий страницу на один известный видео-сервис и пока я не посмотрел что выводится в поле после сохранения - создавалось вышеописанное впечатление.
Касательно "бред" и прочие слюни... я понимаю, тут не support с гарантиями, но, вроде как, сообщество. Откуда негатив?.. Хотя современный менталитет, экономическая, политическая ситуации, системный кризис... - всё это должно (призванно) из нас делать злобных ненавидящих всех во круг быдляков. Не прогибайтесь, коллеги!
Да, первый же ответ был в цель... В лейаут грузится компонент, в представлении которого выводится значение из того самого поля и там нет Html::escape... Уже поправил. Сразу не заметили потому что для тестирования использовали скрипт переводящий страницу на один известный видео-сервис и пока я не посмотрел что выводится в поле после сохранения - создавалось вышеописанное впечатление.
Касательно "бред" и прочие слюни... я понимаю, тут не support с гарантиями, но, вроде как, сообщество. Откуда негатив?.. Хотя современный менталитет, экономическая, политическая ситуации, системный кризис... - всё это должно (призванно) из нас делать злобных ненавидящих всех во круг быдляков. Не прогибайтесь, коллеги!