Sobes.tech
Назад к вопросам
Middle
1

Что такое XSS (Cross-Site Scripting) и как с этим бороться?

Компании, где спрашивали
VKVK

Ответ от нейросети

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 предотвращается за счет правильного экранирования и политики безопасности.