Головна / База знань / Словник термінів / XSS: міжсайтовий скриптинг простими словами

XSS: міжсайтовий скриптинг простими словами

Словник термінів 3 хв читання Оновлено 27.07.2026
Що таке XSS і чому це дірка не в сервері, а в виводі даних. Чим загрожує бізнесу і позиціям, як знахідка виглядає в звіті Shield і як її закрити.

XSS (cross-site scripting, міжсайтовий скриптинг) — це коли сторонній добивається, щоб на сторінках вашого сайту в браузері відвідувача виконався його код. Уразливість не в сервері, а в тому, як сайт показує дані, що прийшли ззовні: з адреси, форми, коментаря або профілю.

Аналогія для власника сайту

Уявіть дошку оголошень у вході в магазин. Якщо хтось принесе записку «видати пред'явнику ключі від каси», а ви повісите її не читаючи — співробітник виконає чужу інструкцію як вашу. XSS влаштований так само: сайт вставляє чужий текст у сторінку як свій, а браузер виконує все, що там опинилося, з повним довірою до вашого домену.

Які бувають різновиди

ВидДе живеКого торкається
ВідображенийЗначення з адреси або форми повертається прямо в HTML відповідіТого, хто перейшов за підготовленим посиланням
ЗбереженийЧужий текст зберігся в базі — коментар, відгук, ім'я профілюКожного, хто відкриє цю сторінку
DOM-basedСкрипти сайту самі підставляють дані з адреси в розміткуВідвідувачів, при цьому в відповіді сервера слідів не видно

Чим це загрожує

  • Викрадення сесій. Чужий скрипт читає cookie і заходить в кабінет або адмінку від імені користувача.
  • Спам і приховані посилання. Сайт починає просувати сторонні теми і втрачає довіру пошуку.
  • Мітка в браузері і видачі. Якщо через дірку впровадили шкідливий код, домен потрапляє в бази небезпечних сайтів, відвідувач бачить попередження «цей сайт може завдати шкоди», а сторінки випадають з індексу.

Як це виглядає в звіті Security Shield

Сканер підставляє в параметри сторінок безпечний маркер і дивиться, повернеться чи він в HTML без екранування. Якщо повернувся — з'являється знахідка «Признак відображеного XSS»: середня серйозність, клас CWE-79, категорія OWASP A03:2021. Позначка «вимагає перевірки» означає, що сервіс бачить поверхню, але не експлуатує її.

Активні проби йдуть тільки в платних режимах і на підтвердженому домені — швидка безкоштовна перевірка їх не робить. Що ще перевіряється — в статті про Security Shield.

Що робити з знахідкою

Відкрийте адресу і параметр з рядка «Де знайдено» і попросіть розробника перевірити, екранується чи це значення при виводі. Відображення сирого значення в HTML — сигнал, що фільтра тут немає.

Як закрити

  1. Екрануйте вивід. Дані від користувача перед вставкою в HTML проходять контекстне кодування: <, >, лапки і амперсанд перетворюються в безпечні послідовності. В шаблонізаторах це одна настройка.
  2. Перевіряйте, що прийшло. Якщо параметр — число, приймайте тільки число. Для текстів з розміткою беріть перевірену бібліотеку очищення HTML.
  3. Увімкніть CSP — навіть при промаху в шаблоні вона не дасть виконатися сторонньому скрипту. З чого почати, описано в статті про заголовки безпеки.
  4. Закрийте cookie прапорами HttpOnly і Secure, щоб сесію не можна було прочитати з JavaScript.
  5. Оновіть CMS, тему і плагіни. Велика частина XSS на типових сайтах приходить з чужого розширення.

Як не допустити повторно

Правило просте: кожне нове поле, яке бачить відвідувач, проходить через той же безпечний вивід, що і інші. Тримайте CSP увімкненою, повторюйте скан після релізів і встановлення плагінів. Корисний і SEO-аудит: раптовий ріст кількості зовнішніх посилань часто виявляється першим слідом ін'єкції.

Часті питання

Чим XSS відрізняється від злому сайту?
При XSS чужий код виконується в браузері відвідувача, а не на вашому сервері. Але через цю дірку часто отримують доступ до адмінки — і тоді справа закінчується справжнім злочином.
Достатньо чи однієї CSP, щоб закрити XSS?
Ні. CSP — друга лінія оборони: вона не дає виконатися сторонньому скрипту, але саму помилку в виводі не виправляє. Починати потрібно з екранування даних.
Чому в звіті стоїть позначка «вимагає перевірки»?
Сканер бачить, що значення параметра повернулося в HTML без екранування, але не проводить атаку. Підтвердити і оцінити ризик повинен розробник.
Спробуйте на своєму проєкті Все, що описано в статті, доступно в кабінеті — бонус при реєстрації вже на балансі.
Відкрити кабінет
Чи була стаття корисною? Дякуємо! Врахуємо при доопрацюванні.