Was die Einschleusung anbelangt, so wie bei SQL, ist das Risiko deutlich geringer... wenn auch theoretisch über einen unbekannten Angriffsvektor möglich.
Die Datenstrukturen und das Protokoll sind binär und API-gesteuert, anstatt Escape-Werte innerhalb einer domänenspezifischen Sprache zu nutzen. Grundsätzlich können Sie den Parser nicht einfach dazu bringen, am Ende ein ";db.dropCollection()" hinzuzufügen.
Wenn es nur für Abfragen verwendet wird, ist es wahrscheinlich in Ordnung ... aber ich würde Sie trotzdem davor warnen, ein wenig Validierung zu verwenden:
- Stellen Sie sicher, dass nur alphanumerische Zeichen verwendet werden (nullen und alles andere, was Sie normalerweise nicht akzeptieren würden, filtern oder ungültig machen)
- Erzwingen Sie eine maximale Länge (z. B. 255 Zeichen) pro Begriff
- Maximale Länge der gesamten Abfrage erzwingen
- Streifen speziell Parameternamen, die mit "$" beginnen, wie "$where" &so
- Erlaube keine verschachtelten Arrays/Dokumente/Hashes ... nur Strings &Ints
Denken Sie auch daran, dass eine leere Abfrage alles zurückgibt. Möglicherweise möchten Sie diesen Rückgabewert begrenzen. :)