XSS_CLEAN не работает в CodeIgniter - PullRequest
4 голосов
/ 04 марта 2012

$this->input->post('question', TRUE)

Если даже я добавлю TRUE, он все равно позволит людям добавлять HTML-кодПочему это так?

1 Ответ

5 голосов
/ 04 марта 2012

Функция xss_clean() не удаляет все HTML, она удаляет / заменяет определенные вещи, которые считаются опасными, например теги <script>.

http://codeigniter.com/user_guide/libraries/security.html

Фильтр XSS ищет общепринятые методы для запуска Javascript или других типов кода, которые пытаются захватить куки или совершить другие вредоносные действия. Если обнаруживается что-либо запрещенное, оно становится безопасным путем преобразования данных в символьные объекты.

Кто-то, вставляющий тег <p> на вашу страницу, хотя, возможно, нежелателен, на самом деле не является эффективной атакой. Вам нужно будет указать, что вы хотите с ним делать. Во многих случаях вы захотите вывод HTML, который был xss_clean() ed.

Звучит так, будто вы хотите либо htmlspecialchars(), либо strip_tags() (примечание: эти две совершенно разные вещи). Если вы хотите закодировать HTML, вы также можете использовать CI html_escape():

echo html_escape($this->input->post('question'));

Если вы хотите выводить HTML, а не объекты, просто используйте фильтр XSS:

echo $this->input->post('question', TRUE);
echo xss_clean($user_input);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...