Dans la mesure où l'injection pose problème, comme avec SQL, le risque est significativement plus faible... quoique théoriquement possible via un vecteur d'attaque inconnu.
Les structures de données et le protocole sont binaires et pilotés par API plutôt que d'exploiter des valeurs échappées dans un langage spécifique à un domaine. Fondamentalement, vous ne pouvez pas simplement tromper l'analyseur en ajoutant un ";db.dropCollection()" à la fin.
S'il n'est utilisé que pour les requêtes, c'est probablement bien... mais je vous conseille tout de même d'utiliser un tout petit peu de validation :
- Assurez-vous que seuls les caractères alphanumériques (filtrez ou invalidez les valeurs nulles et tout ce que vous n'accepteriez pas normalement)
- Imposer une longueur maximale (par exemple 255 caractères) par terme
- Appliquer une longueur maximale de la requête entière
- Strip spécial les noms de paramètre commençant par "$", comme "$where" &tel
- Ne pas autoriser les tableaux/documents/hachages imbriqués... uniquement les chaînes et entiers
N'oubliez pas non plus qu'une requête vide renvoie tout. Vous voudrez peut-être une limite sur cette valeur de retour. :)