NoSQL Enjeksiyonu (ARCH5140)
Anahtar go.security.nosql-injection · Önem error · Kategori security · CWE CWE-943
Güvenilmeyen girdiyi doğrudan bir NoSQL sorgusuna geçirmek, saldırganın $gt gibi sorgu operatörleri enjekte ederek kimlik doğrulamayı atlamasına veya veri açığa çıkarmasına olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”var filter bson.Mjson.Unmarshal(r.Body, &filter) // {"password": {"$ne": null}}coll.FindOne(ctx, filter)var req struct{ User, Pass string }json.NewDecoder(r.Body).Decode(&req)filter := bson.M{"user": req.User, "pass": req.Pass}coll.FindOne(ctx, filter)Düzeltme
Bölüm başlığı “Düzeltme”Sorgu filtrelerini ham kullanıcı nesnelerinden değil, türlenmiş skaler alanlardan oluşturun.