Ответ
XSS (Cross-Site Scripting) — это уязвимость, позволяющая злоумышленнику внедрить вредоносный JavaScript-код на страницу, которую видят другие пользователи.
Пример уязвимого кода в Go (если не экранировать вывод):
fmt.Fprintf(w, "<div>%s</div>", userInput) // опасный вывод без экранирования
Как защититься:
- Используйте
html/templateдля автоматического экранирования:
tmpl, _ := template.New("safe").Parse(`<div>{{.}}</div>`)
tmpl.Execute(w, userInput) // автоматически экранирует HTML
- Для JSON используйте
json.Marshal, а не ручную конкатенацию. - Устанавливайте заголовок
Content-Security-Policy(CSP).
XSS бывает хранимый (в базе), отражённый (в URL) и DOM-based (на клиенте).