Şablon Enjeksiyonu (ARCH5130)
Anahtar go.security.template-injection · Önem error · Kategori security · CWE CWE-1336
Şablon metninin kendisini kullanıcı girdisinden oluşturmak, saldırganların şablon direktifleri enjekte etmesine (SSTI) ve sunucuda kod çalıştırmasına olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”func render(w http.ResponseWriter, r *http.Request) { src := "Merhaba " + r.URL.Query().Get("name") t := template.Must(template.New("p").Parse(src)) t.Execute(w, nil)}var tmpl = template.Must(template.New("p").Parse("Merhaba {{.Name}}"))
func render(w http.ResponseWriter, r *http.Request) { tmpl.Execute(w, struct{ Name string }{r.URL.Query().Get("name")})}Düzeltme
Bölüm başlığı “Düzeltme”Şablonları sabit kaynaklardan derleyin; kullanıcı girdisini şablon metnine değil, yalnızca veri olarak geçirin.