İçeriğe geç

Sunucu Taraflı İstek Sahteciliği (ARCH5104)

Anahtar go.security.ssrf · Önem warning · Kategori security · CWE CWE-918

Kullanıcının verdiği bir URL’ye doğrulamadan istek yapmak, saldırganların sunucuyu dahili servislere veya bulut metadata uç noktalarına istek atmaya zorlamasına olanak tanır.

func fetch(w http.ResponseWriter, r *http.Request) {
url := r.URL.Query().Get("url")
resp, _ := http.Get(url)
io.Copy(w, resp.Body)
}
var allowedHosts = map[string]bool{"api.example.com": true}
func fetch(w http.ResponseWriter, r *http.Request) {
u, err := url.Parse(r.URL.Query().Get("url"))
if err != nil || !allowedHosts[u.Hostname()] {
http.Error(w, "forbidden", 403)
return
}
resp, _ := http.Get(u.String())
io.Copy(w, resp.Body)
}

Giden URL’leri bir izin listesine göre doğrulayın; özel IP aralıklarını ve metadata uç noktalarını engelleyin.