Voor zover injectie een probleem is, zoals bij SQL, is het risico aanzienlijk lager... hoewel theoretisch mogelijk via een onbekende aanvalsvector.
De datastructuren en het protocol zijn binair en API-gestuurd in plaats van gebruik te maken van ontsnapte waarden binnen een domeinspecifieke taal. Kortom, je kunt de parser niet zomaar misleiden om aan het einde een ";db.dropCollection()" toe te voegen.
Als het alleen voor zoekopdrachten wordt gebruikt, is het waarschijnlijk prima... maar ik zou je toch willen waarschuwen om een klein beetje validatie te gebruiken:
- Zorg ervoor dat alleen alfanumerieke tekens worden gebruikt (filter of maak nulls ongeldig en al het andere dat u normaal niet zou accepteren)
- Dwing een maximale lengte af (zoals 255 tekens) per term
- Een maximale lengte van de hele zoekopdracht afdwingen
- Strip speciaal parameternamen die beginnen met "$", zoals "$where" en dergelijke
- Geen geneste arrays/documenten/hashes toestaan... alleen strings &ints
Houd er ook rekening mee dat een lege query alles retourneert. Misschien wilt u een limiet voor die retourwaarde. :)