İçeriğe geç

Dizin Aşımı (ARCH5103)

Anahtar go.security.path-traversal · Önem error · Kategori security · CWE CWE-22

Kullanıcı girdisinden gelen bir dosya adını doğrulamadan dosya yoluna eklemek, saldırganların ../ dizileriyle hedef dizin dışındaki dosyalara erişmesine olanak tanır.

func serve(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("file")
data, err := os.ReadFile(filepath.Join("/srv/files", name))
if err != nil {
http.Error(w, "not found", 404)
return
}
w.Write(data)
}
func serve(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("file")
clean := filepath.Join("/srv/files", filepath.Clean("/"+name))
if !strings.HasPrefix(clean, "/srv/files/") {
http.Error(w, "forbidden", 403)
return
}
data, err := os.ReadFile(clean)
if err != nil {
http.Error(w, "not found", 404)
return
}
w.Write(data)
}

Yolu filepath.Clean ile normalleştirin ve sonucun hedef kök dizin içinde kaldığını doğrulayın.