XSS (Cross-Site Scripting, межсайтовый скриптинг) — уязвимость, при которой недоверенные данные попадают в страницу так, что браузер воспринимает их как исполняемый код. На сайте Joomla такая ошибка может возникнуть в расширении, шаблоне или пользовательской доработке.
Основные виды
При хранимой XSS опасные данные сохраняются и затем показываются посетителям. При отражённой — возвращаются в ответе на запрос. DOM XSS возникает при небезопасной обработке данных скриптами в браузере. Эти признаки описывают разные аспекты, поэтому варианты могут пересекаться.
Почему это опасно
Код выполняется в контексте сайта и может менять интерфейс или совершать доступные пользователю действия. HttpOnly затрудняет чтение cookie, но не делает XSS безвредной. Последствия зависят от прав пользователя и доступных функций.
Принципы защиты
Данные нужно обрабатывать в соответствии с местом вывода: HTML-текст, атрибут, URL и JavaScript требуют разных мер. Когда нужен обычный текст, используйте безопасный текстовый вывод вместо интерпретации HTML. Если разрешена разметка, применяйте проверенный HTML-санитайзер с ограниченным набором возможностей.
Проверка ввода дополняет защиту, но не заменяет корректный вывод. CSP может ограничить выполнение скриптов, однако служит дополнительным слоем. Удаление только слова script или применение одного фильтра ко всем контекстам недостаточно.
Проверка Joomla
Поддерживайте Joomla, шаблон и расширения в актуальном состоянии. Разработчики должны проверять каждое место вывода недоверенных данных, включая AJAX и DOM-обновления. Тесты выполняют на отдельной копии Joomla и с разрешением владельца, без опасных демонстраций на рабочем сайте.
Итог
Защита Joomla от XSS требует безопасного вывода, обработки разрешённого HTML и обновлений. Одна настройка или защитный плагин не заменяют эти меры.