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

MongoDB $regex-Abfrage und potenzielle Exploits

Mein ziemlich persönliches Bauchgefühl sagt:Mach dir keine Sorgen. Aber wenn Sie es dennoch tun oder sogar müssen, finden Sie hier einige Vorschläge, wie Sie mit dieser Anforderung umgehen können:

  1. Sie können eine maximale Zeit definieren, die eine Abfrage ausgeführt werden darf, indem Sie maxTimeMS() .
  2. Sie könnten versuchen, die Regex-Eingabe zu bereinigen, aber ich bezweifle, dass es da draußen Bibliotheken gibt, die Ihnen dabei helfen würden, angesichts der endlosen Variationen potenziell langlaufender komplexer Abfragen. Die Begrenzung der Länge einer Regex könnte ebenfalls hilfreich sein, verfehlt aber wahrscheinlich den Zweck, einem Benutzer eine bequeme Suche mit beliebigen Filtern zu ermöglichen.
  3. Sie könnten eine strukturiertere Abfrageeingabe bereitstellen, die z. Erlauben Sie einem Benutzer nur, einen einzelnen alphanumerischen Text einzugeben, den Sie dann serverseitig in eine Regex einschließen würden, um z. "beginnt mit", "enthält" oder "endet mit" Abfragen oder so etwas.
  4. Sie könnten nur eine einzige parallele Abfrage pro Benutzer (session? ip?) zulassen, was wahrscheinlich ein wenig gegen tödliche DoS-Angriffe helfen würde, aber sicherlich nicht gegen verteilte ... Oder Sie könnten sogar nur einen einzigen parallelen Aufruf davon zulassen Endpunkt über das gesamte System.