İçeriğe geç

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.

var filter bson.M
json.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)

Sorgu filtrelerini ham kullanıcı nesnelerinden değil, türlenmiş skaler alanlardan oluşturun.