İçeriğe geç

XSS (ARCH5101)

Anahtar go.security.xss · Önem error · Kategori security · CWE CWE-79

Kullanıcı girdisini kaçış yapmadan HTML çıktısına yazmak (örneğin template.HTML ile otomatik kaçışı devre dışı bırakmak) saldırganların betik enjekte etmesine olanak tanır.

func page(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
t := template.Must(template.New("p").Parse("<h1>{{.}}</h1>"))
t.Execute(w, template.HTML(name)) // kaçış atlanır
}
func page(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
t := template.Must(template.New("p").Parse("<h1>{{.}}</h1>"))
t.Execute(w, name) // html/template otomatik kaçış yapar
}

html/template otomatik kaçışına güvenin; kullanıcı girdisini template.HTML gibi türlere dönüştürmeyin.