php Что такое XSS
Primary tabs
XSS — это вид уязвимости, которая свойственна веб-приложениям. Данная атака на сайт состоит в том, что в выдаваемую страницу внедряется вредоносный JavaScript-код. Это становится возможным из-за недостаточной фильтрации данных, полученных от пользователя.
Принцип атаки
- На сайте есть форма для публикации сообщения.
- Через эту форму хакер вместо простого текста отправляет JS-код.
- Сообщение публикуется на странице, которая доступна всем посетителям.
- Вредоносный код выполняется для каждого посетителя этой страницы.
- Вредоносный скрипт вредит пользователям сайта. Например, крадёт их куки.
Вариант решения проблемы
Надо обезопасить страницу, отфильтровав информацию из формы с помощью HTML-мнемоник (кодовое представление символа в HTML, который начинается со знака амперсанда & и завершается точкой с запятой ;).
Теги <script>
состоят из треугольных скобок, а значит, если их заменить на мнемоники, то такой текст больше не будет трактоваться браузером как HTML-тег. Мнемоники часто используются, когда надо показать пользователю фрагмент с HTML-кодом на странице.
Применение функции фильтрации htmlspecialchars
В PHP функция htmlspecialchars для переданной строки выполнит фильтрацию и заменит все опасные символы в ней на подходящие HTML-мнемоники. Пример:
$text = "<script><script>"; // эту строку мы получили от пользователя $safe_str = htmlspecialchars($text); // отфильтрованная, безопасная строка print($safe_str); // узнаём, что получилось
Результат работы этого сценария: <script></script>
Источники
- Log in to post comments
- 530 reads