Экранируйте вывод под контекст (HTML/attr/JS/URL), избегайте innerHTML с недоверенным вводом, используйте шаблонизаторы с auto-escape и Content-Security-Policy как слой защиты.
Разбор
- HTML-encode при вставке в тело страницы.
- Не кладите пользовательский текст в inline
<script> без жёсткого экранирования.
- HttpOnly cookie снижает кражу сессии через
document.cookie (но не все XSS).
- CSP с запретом inline script сильно усложняет эксплуатацию.
Итог
XSS закрывают контекстным экранированием + CSP, а не «одной валидацией на входе».