Cross-Site Scripting (XSS)
XSS-атаки позволяют выполнить произвольный JS-код в контексте пользователя, что ведёт к краже токенов, перехвату сессий и подмене контента. Современные фреймворки экранируют данные по умолчанию — этот защитный механизм обходить без крайней необходимости FORBIDDEN.
Правила
MUST
- Если рендеринг HTML необходим (CMS, WYSIWYG, Markdown) — санитизация выполняется непосредственно перед рендерингом
- Использовать только проверенные библиотеки санитизации:
dompurify— для клиентского рендерингаisomorphic-dompurify— для SSR-приложений
- Применять принцип whitelist (явное указание разрешенных тегов и атрибутов)
FORBIDDEN
- Использование
dangerouslySetInnerHTMLбез предварительной санитизации - Присвоение недоверенных данных в
innerHTMLчерез ref или DOM API без санитизации - Динамическое формирование HTML-строк с пользовательскими данными
- Самостоятельная реализация санитизации (в т.ч. через Regular Expressions)
- Количество векторов атаки слишком велико для ручной обработки