For så vidt angår injektion er et problem, ligesom med SQL, er risikoen væsentligt lavere... omend det er teoretisk muligt via en ukendt angrebsvektor.
Datastrukturerne og protokollen er binære og API-drevne i stedet for at udnytte undslippede værdier inden for et domænespecifikt sprog. Dybest set kan du ikke bare narre parseren til at tilføje en ";db.dropCollection()" til sidst.
Hvis det kun bruges til forespørgsler, er det sikkert fint... men jeg vil stadig advare dig om at bruge en lille smule validering:
- Sørg for kun alfanumeriske tegn (filtrer eller ugyldiggør null og alt andet, du normalt ikke ville acceptere)
- Håndhæv en maksimal længde (som 255 tegn) pr. term
- Håndhæv en maksimal længde af hele forespørgslen
- Strip særlig parameternavne, der starter med "$", som "$where" og sådan
- Tillad ikke indlejrede arrays/dokumenter/hashes... kun strenge og ints
Husk også, at en tom forespørgsel returnerer alt. Du vil måske have en grænse for denne returværdi. :)