sql >> Database >  >> NoSQL >> MongoDB

Hoe gevaarlijk is een mongo-query die rechtstreeks wordt gevoed vanuit een URL-querystring?

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. :)



  1. Gradle-afhankelijkheden werken niet in IntelliJ

  2. $geoNear (geaggregeerde pijplijn) retourneert niet de juiste documenten

  3. Mongodb aggregatie opzoeken met voorwaarden

  4. MongoDB $ opzoeken op genest document