Міжсайтовий скриптинг (XSS) — вразливість вебсайту, яка дозволяє впровадити шкідливий JavaScript у сторінки, що їх бачать інші користувачі, і виконати його в їхніх браузерах із правами сайту.
Як працює XSS
XSS виникає, коли сайт виводить на сторінку неперевірені дані без правильного екранування. Браузер не може відрізнити впроваджений код від власного JavaScript сайту й виконує його.
Три основні типи:
- Збережений (stored). Код зберігається на сервері, наприклад у коментарі чи профілі, і спрацьовує в кожного відвідувача.
- Відображений (reflected). Код міститься в посиланні й повертається у відповіді сервера, тож жертва має відкрити підготовлений URL.
- DOM-based. Помилка в клієнтському коді, який записує небезпечні дані на сторінку.
Чому XSS небезпечний
Впроваджений скрипт може:
- викрасти сесійні cookie й токени;
- виконувати дії від імені користувача;
- показати підроблену форму входу;
- перенаправити на шкідливий сайт або змінити вміст сторінки.
2005 року хробак Samy через збережений XSS за добу додав у друзі понад мільйон користувачів MySpace. Сьогодні XSS в адмін-панелях, вебпошті та плагінах популярних CMS — поширений спосіб захоплення акаунтів і сайтів. Разом із SQL-ін’єкціями XSS належить до родини ін’єкційних вразливостей.
Як запобігти XSS
- Екрануйте виведення з урахуванням контексту (HTML, атрибут, JavaScript, URL). Сучасні фреймворки роблять це за замовчуванням — не обходьте цей захист.
- Очищуйте користувацький HTML перевіреною бібліотекою, наприклад DOMPurify.
- Увімкніть сувору Content Security Policy (CSP), яка забороняє вбудовані й сторонні скрипти.
- Позначайте сесійні cookie прапорцями HttpOnly і Secure, оновлюйте плагіни CMS.