Что реально помогает не дать XSS засунуть на сайт?
Видел кучу постов с советами по XSS, но часто получается либо слишком общий набор правил, либо просто копипаста с OWASP без оглядки на реальность. Кто как обычно у себя борется с этим? Я в основном делаю фильтрацию на входе и вывожу данные через функции, которые экранируют спецсимволы — например htmlspecialchars в PHP. Еще стараюсь использовать Content Security Policy, чтобы ограничить запуск скриптов. Но вот интересно, кто-то пользуется библиотеками типа DOMPurify для очистки HTML в браузере? Или это лишний уровень?
Ещё меня волнует, как правильно проверять сам сайт на XSS — просто через разные payload’ы вставлять или лучше брать готовые наборы из Burp Suite или OWASP ZAP? И кто-то пробовал автоматические сканеры на больших проектах, реально ли их результаты можно считать частью защиты, а не просто списком раздражающих false positive?
Короче, делитесь, у кого какие приемы и сколько времени ушло на то, чтобы поставить защиту от XSS не «для галочки», а так чтобы реально работала.
htmlspecialchars — это ровно то, что надо, но главное не забывать правильный контекст вывода, иначе сработает не всегда. CSP круто дополняет защиту, но без базовой фильтрации и эскейпа сама по себе не спасёт. DOMPurify в браузере — отлично для случаев, когда юзер может вставлять html, но всегда надо тестить на своих real payload'ах, а не только готовых из Burp или ZAP, чтобы понимать, что реально прилетает.