XSS (Cross-Site Scripting) це вразливість, коли застосунок виводить на сторінку дані від користувача без екранування, і серед них опиняється скрипт. Цей скрипт виконується у браузері кожного, хто відкрив сторінку. Це CWE-79.
Як це зустрічається на практиці
Класичний вхід це коментарі, імена, будь-який текст, який один користувач вводить, а інші бачать. Перше, що робить впроваджений скрипт, це забирає cookie сесії. Із чужою сесією пароль уже не потрібен.
Приклад
Замість імені користувач лишає:
Якщо вивід не екранований, кожен, хто відкрив сторінку з цим коментарем, віддає свою сесію на чужий сервер.
Як захиститись
- Екрануйте будь-який користувацький вивід
- Поставте заголовок Content-Security-Policy
- Cookie сесії видавайте з прапорцями HttpOnly і Secure, щоб їх не читав скрипт
