Йоу.
Основная причина возникновения XSS - отсутствие фильтрации пользовательского ввода на (&, <, >, ", ')
Большинство современных ORM, шаблонизаторов в языках выполняют эскейпинг пользовательских данных, что должно защищать от XSS. К сожалению часто разработчики выключают эти проверки руками.
Смотри этот полный читщит
https://www.owasp.org/index.php/XSS_(Cross_Site_Sc...
Кстати, я один из разработчиков сканера уязвимостей, в том числе и XSS -
https://metascan.ru