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.
Hatalı
Bölüm başlığı “Hatalı”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}Düzeltme
Bölüm başlığı “Düzeltme”html/template otomatik kaçışına güvenin; kullanıcı girdisini template.HTML gibi türlere dönüştürmeyin.