Проблема заключается не во входе как таковом, а в том, как вы его выводите. Если вы echo
прямо на HTML-страницу, то вам нужно закодировать HTML-код; это верно для всех строк, которые вы включаете в HTML-страницу, а не только файлы cookie. Если вы являетесь привычкой выводить неэкранированные строки в HTML, вам, вероятно, гораздо легче использовать ошибки XSS, чем это (*).
Способ правильно обрабатывать переменный текст для вывода в HTML - это обернуть каждую переменную в htmlspecialchars()
в точке, в которой вы эхо в HTML (а не как шаг обработки ввода).Не используйте strip_tags()
- он не разработан как мера безопасности, и он не срабатывает в самых разных обстоятельствах. Если вам нужно принять ограниченную пользовательскую разметку, используйте библиотеку очистителя HTML.
(*: как использование HTML-инъекции-из-файла cookie во многом зависит от того, как этот файл cookie установлен. В любом случае злоумышленник может убедить ваше приложение установить конкретное значение cookie другого пользователя, легко будет использоваться, иначе, чтобы использовать HTML-инъекцию, они должны были бы найти ошибку для исправления cookie. Это может быть ошибкой в заголовке в вашем приложении, или это может быть любое уязвимое приложение в «соседнем домене», -на заявке на a.example.com
может установить файл cookie, который будет считаться приложением по адресу b.example.com
.)
Покажите нам какой-то код о том, как вы используете свои файлы cookie. – Brad
Не доверяйте куки. Их очень легко редактировать. Всегда проверяйте их содержимое перед их использованием. –