XPath enjeksiyonu (ARCH5108)
Anahtar go.security.xpath-injection · Önem error · Kategori security · CWE CWE-643
Girdiden derlenen bir XPath ifadesi (xpath.Compile, htmlquery.FindOne(doc, ...), xmlquery.Find) çağıranın sorguyu yeniden yazmasına izin verir - ' or '1'='1 her düğümü seçer.
Hatalı
Bölüm başlığı “Hatalı”expr := fmt.Sprintf("//user[@name='%s']", name)node := htmlquery.FindOne(doc, expr)if !validName.MatchString(name) { return ErrBadName}node := htmlquery.FindOne(doc, "//user[@name='"+strings.ReplaceAll(name, "'", "")+"']")Düzeltme
Bölüm başlığı “Düzeltme”Değeri ifadeye girmeden önce izin listesi deseniyle doğrulayın ya da sabit bir yolla seçip öznitelikleri Go tarafında karşılaştırın.