MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie gefährlich ist eine Mongo-Abfrage, die direkt aus einer URL-Abfragezeichenfolge gespeist wird?

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