Межсайтовый скриптинг (XSS)
Что такое Межсайтовый скриптинг (XSS)?
Межсайтовый скриптинг (XSS)Веб-уязвимость, позволяющая злоумышленнику внедрять вредоносные скрипты на страницы, просматриваемые другими пользователями, и выполнять их в браузере жертвы под источником сайта.
Межсайтовый скриптинг (XSS) возникает, когда веб-приложение отражает или сохраняет недоверенный ввод в своих ответах без контекстно-зависимого экранирования, позволяя контролируемому злоумышленником JavaScript выполняться в браузере жертвы под источником сайта — наследуя его cookie, доступ к DOM и привилегии того же источника (same-origin). Существуют три класса: отражённый (нагрузка возвращается из запроса), хранимый (нагрузка сохраняется на стороне сервера, например в комментарии) и DOM-based (приёмник находится в клиентском JavaScript, таком как innerHTML или document.write).
Каноническая демонстрация охвата хранимого XSS — червь Samy: 4 октября 2005 года Samy Kamkar разместил JavaScript-нагрузку в своём профиле MySpace, которая добавляла его в друзья и копировала себя в профиль каждого просмотревшего. Менее чем за 20 часов он заразил более одного миллиона аккаунтов — самый быстро распространяющийся червь того времени — и привёл к рейду Секретной службы и признанию вины в тяжком преступлении. XSS остаётся неизменным элементом OWASP Top 10, включённым в категорию A03:2021 (Injection).
Защита многоуровневая: контекстно-зависимое кодирование вывода (HTML, атрибуты, JS, URL), строгая Content-Security-Policy с nonce или хешами для блокировки встроенных скриптов, автоматическое экранирование во фреймворках (React, Angular), Trusted Types для запирания опасных DOM-приёмников и cookie с флагами HttpOnly/SameSite для ограничения кражи сессий. Валидация ввода помогает, но сама по себе недостаточна.
flowchart LR A["Злоумышленник отправляет нагрузку"] --> W["Веб-приложение сохраняет или отражает ввод"] W -->|"Неэкранированный вывод"| V["Браузер жертвы отображает страницу"] V --> X["Скрипт злоумышленника выполняется в источнике сайта"] X --> S["Кража cookie/сессии, кейлоггинг, разворот атаки"]
● Примеры
- 01
Хранимая XSS-нагрузка в сообщении форума крадёт cookie-сессии у всех пользователей, открывающих ветку.
- 02
Отражённый XSS в параметре поиска выполняет JavaScript злоумышленника через специально подготовленную ссылку.
● Частые вопросы
Что такое Межсайтовый скриптинг (XSS)?
Веб-уязвимость, позволяющая злоумышленнику внедрять вредоносные скрипты на страницы, просматриваемые другими пользователями, и выполнять их в браузере жертвы под источником сайта. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Межсайтовый скриптинг (XSS)?
Веб-уязвимость, позволяющая злоумышленнику внедрять вредоносные скрипты на страницы, просматриваемые другими пользователями, и выполнять их в браузере жертвы под источником сайта.
Как защититься от Межсайтовый скриптинг (XSS)?
Защита от Межсайтовый скриптинг (XSS) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Межсайтовый скриптинг (XSS)?
Распространённые альтернативные названия: XSS.