Назад к вопросам
VK
Middle
1
Что такое XSS (Cross-Site Scripting) и как с этим бороться?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
XSS (Cross-Site Scripting) — это уязвимость веб-приложений, при которой злоумышленник внедряет вредоносный скрипт (обычно JavaScript) в страницы, просматриваемые другими пользователями. Это позволяет украсть сессии, подделать действия пользователя или выполнить другие атаки.
Для борьбы с XSS в Go и веб-разработке в целом:
- Всегда экранируйте пользовательский ввод при выводе в HTML. В Go для этого можно использовать пакет
html/template, который автоматически экранирует данные. - Используйте Content Security Policy (CSP) — заголовок, ограничивающий выполнение скриптов.
- Валидация и фильтрация входных данных.
- Избегайте вставки пользовательских данных напрямую в HTML, JavaScript или атрибуты.
Пример безопасного вывода с использованием html/template:
package main
import (
"html/template"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.New("page").Parse(`<div>{{.}}</div>`))
userInput := r.URL.Query().Get("input")
tmpl.Execute(w, userInput) // автоматически экранирует
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Таким образом, XSS предотвращается за счет правильного экранирования и политики безопасности.