php Что такое XSS

XSS — это вид уязвимости, которая свойственна веб-приложениям. Данная атака на сайт состоит в том, что в выдаваемую страницу внедряется вредоносный JavaScript-код. Это становится возможным из-за недостаточной фильтрации данных, полученных от пользователя.

Принцип атаки

  1. На сайте есть форма для публикации сообщения.
  2. Через эту форму хакер вместо простого текста отправляет JS-код.
  3. Сообщение публикуется на странице, которая доступна всем посетителям.
  4. Вредоносный код выполняется для каждого посетителя этой страницы.
  5. Вредоносный скрипт вредит пользователям сайта. Например, крадёт их куки.

Вариант решения проблемы

Надо обезопасить страницу, отфильтровав информацию из формы с помощью HTML-мнемоник (кодовое представление символа в HTML, который начинается со знака амперсанда & и завершается точкой с запятой ;).
Теги  <script>  состоят из треугольных скобок, а значит, если их заменить на мнемоники, то такой текст больше не будет трактоваться браузером как HTML-тег. Мнемоники часто используются, когда надо показать пользователю фрагмент с HTML-кодом на странице.

Применение функции фильтрации htmlspecialchars

В PHP функция htmlspecialchars для переданной строки выполнит фильтрацию и заменит все опасные символы в ней на подходящие HTML-мнемоники. Пример:

$text = "<script><script>"; // эту строку мы получили от пользователя
$safe_str = htmlspecialchars($text); // отфильтрованная, безопасная строка
print($safe_str); // узнаём, что получилось

Результат работы этого сценария: &lt;script&gt;&lt;/script&gt;

Источники

Key Words for FKN + antitotal forum (CS VSU):