Как избежать двойного экранирования и защитить от xss, используя функцию set_value в codeigniter - PullRequest
2 голосов
/ 08 марта 2019

Привет и спасибо за чтение.

Я работаю на CodeIgniter 3 с PHP 7.0 и использую формы с form_helper.

Сначала у меня возникли проблемы с повторным заполнением формы с помощью *Функция 1005 * set_value после использования библиотеки form_validation в моем контроллере.Я использовал set_value в моем form_helper следующим образом:

$my_input = array(
    'name' => 'my_name',
    'value' => set_value('my_name')
);
echo form_label('Title :');
echo form_textarea($my_input);

Итак, с таким текстом:

she's the chief's lady

Форма была заполнена следующим образом:

she's the chief's lady

Это не большая проблема, потому что, когда я регистрирую эти данные и заполняю поле, в HTML это выдает правильное предложение.

НО, если есть другая ошибка вформа, затем предложение будет записано так:

she's the chief's lady

и теперь мои данные больше не верны.

Итак, я прочитал DOC CodeIgniter и нашел это:

Третий (необязательный) параметр позволяет отключить экранирование HTML от значения в случае, если вам нужно использовать эту функцию в сочетании с ie form_input () и избежать двойного экранирования.

Так здорово, что я решил свою проблему с побегом.Но как насчет инъекции XSS?Эта практика кажется очень опасной, я не понимаю, почему это лучший способ, если я доверяю DOC CodeIgniter (я сделал быстрое тестирование со сценарием оповещения, и безопасность не прошла).Итак:

1) Каков наилучший способ обезопасить себя и избежать побега, когда мне нужно заново заполнить форму ???

2) Единственный человек, который видит злой вклад, этотот, кто написал это, но все еще опасно для моего веб-приложения или нет ???

3) И если нет опасности при повторном заполнении формы отправленными данными, зачем намустановить для параметра выхода значение FALSE в set_value ()?Почему значение по умолчанию не установлено в FALSE?

РЕДАКТИРОВАТЬ: я добавил 2 последних вопроса

1 Ответ

0 голосов
/ 08 марта 2019

CodeIgniter будет безопасно предотвращать внедрение SQL, когда что-то входит в его модели.Поскольку вы просто отображаете результат в браузере, нет риска инъекция , так как все, что вы делаете, это отображаете то, что они им написали.

Но у вас естьХорошее замечание о JavaScript или другой тег.Если предположить, что единственный пользователь, который может получить доступ к полю ввода, является автором его содержимого, а вы избегаете его результатов при просмотре другими людьми, то единственный человек, которому они когда-либо могут создать окно предупреждения (или еще хуже)поскольку это они сами, что, конечно, они могут сделать в любом случае в консоли.

Если вы все еще беспокоитесь, вы всегда можете использовать PHP strip_tags () в этом поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...