Объясните XSS и защиту
Вопрос
Что такое XSS, какие бывают виды и как от него защищаться в современном фронтенде?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Суть: внедрение скрипта, который выполняется в контексте сайта у другого пользователя
Виды: отражённый, хранимый, DOM-based
Главная защита: экранирование по контексту при выводе, автоэкранирование фреймворка
Опасные обходы: innerHTML, dangerouslySetInnerHTML, javascript-URL; санитайзер для HTML
Дополнительно: строгая CSP с nonce, HttpOnly, Trusted Types
Что могут спросить следом
- Что может сделать атакующий, если cookie HttpOnly?
- Как бы вы внедрили CSP в большом существующем приложении?
Разбор
Образцовый ответ: «XSS это когда атакующий заставляет страницу выполнить его JavaScript в браузере другого пользователя. Бывает отражённый, через параметр в ссылке, хранимый, когда код сохранён, например, в комментарии, и DOM-based, когда клиентский код сам кладёт данные из URL в innerHTML. Основная защита: выводить данные как текст, экранируя под контекст. React и шаблонизаторы делают это по умолчанию, поэтому смотрю на обходы: dangerouslySetInnerHTML, innerHTML, ссылки из пользовательских данных, где нужна проверка схемы. Если надо показать HTML, использую DOMPurify. Второй слой: строгая CSP на nonce, она не даст выполниться внедрённому скрипту. Cookie сессии HttpOnly, но это лишь не даёт её украсть, запросы от имени жертвы всё равно возможны».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.