Ci sono attacchi di iniezione contro MongoDB, ma questi sono in gran parte mitigati usando le appropriate librerie di adattatori di dati. Tuttavia, vale la pena sapere che è possibile iniettare in pochi modi.
La prima cosa che devi cercare sono i casi in cui generi dinamicamente un $where
con JavaScript, utilizzando l'input dell'utente. Modificando i loro input, potrebbero essere in grado di modificare la tua query. Il secondo problema che devi gestire è l'iniezione di operatori come $or
(o parametri per tali operatori) che possono alterare il comportamento della query. Entrambi sono mitigati dall'assenza di metodi in stile di concatenazione, ma utilizzando invece librerie che funzionano su strutture di dati (ad es. JSON).
Potrebbe anche essere possibile sfuggire al $
che precede un operatore, al fine di fornire operatori alternativi. Assicurati di eseguire correttamente l'escape delle chiavi se i dati dell'utente sono utilizzati al loro interno.
Tutto sommato, eviterei cose come NodeJS per qualcosa di critico per la sicurezza. Non è stato progettato pensando a qualsiasi forma di sicurezza, ed è un progetto giovane. Se stai consumando MongoDB da una lingua diversa, va bene.
Per maggiori dettagli, vedi Domande frequenti di MongoDB .