Я работаю над сайтом, перечисляющим книги, и столкнулся с проблемой фильтрации xss-кода. Когда форма отправляется для создания листинга, любой заголовок, который включает в себя «Javascript:», заменяется на «[УДАЛЕНЫ]». Я попытался получить доступ к данным из массива POST следующим образом:
$title = $_POST['title'];
чтобы избежать использования класса Input, но он все равно каким-то образом фильтруется. Есть ли способ обойти это, что не связано с отключением global_xss_filtering?
Есть ли способ обойти это, что не связано с отключением global_xss_filtering?
Прошу прощения, но нет. Вы должны отключить его, поскольку он рано меняет исходные данные в начале выполнения CI.
Я мог бы на 5 страниц рассказать о правильном использовании фильтра xss, но я постараюсь сделать его кратким:
Вот лишь один из многих трагических примеров того, почему глобальный фильтр XSS – это плохая идея:
document.write123
[removed]123
Теперь пользователь может войти в систему с помощью любого из следующих паролей, потому что они также будут преобразованы в фильтр [removed]123
, прежде чем вы их проверите:
<script>123
document.write123
document.cookie123
Этого не должно быть. Пользователь не должен входить в систему с несколькими паролями (если только это не по дизайну … я полагаю).
Кроме того, удачи, сохраняя любые ваши сообщения в блоге, которые используют <iframe>
s … YouTube-видео, например.