MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB zapytanie $regex i potencjalne exploity

Moje osobiste przeczucie mówi:nie zawracaj sobie głowy. Ale z drugiej strony, jeśli jednak to zrobisz lub nawet musisz, oto kilka sugestii, jak poradzić sobie z tym wymogiem:

  1. Możesz zdefiniować maksymalny czas, przez jaki zapytanie może zostać uruchomione przy użyciu maxTimeMS() .
  2. Możesz spróbować oczyścić dane wejściowe wyrażeń regularnych, ale wątpię, czy istnieją biblioteki, które pomogłyby ci w tym, biorąc pod uwagę niekończące się odmiany potencjalnie długo działających złożonych zapytań. Ograniczenie długości wyrażenia regularnego również może pomóc, ale z drugiej strony prawdopodobnie zaprzecza celowi, jakim jest umożliwienie użytkownikowi wygodnego wyszukiwania przy użyciu dowolnych filtrów.
  3. Możesz udostępnić bardziej ustrukturyzowane dane wejściowe zapytania, które np. zezwól użytkownikowi tylko na wpisanie pojedynczego tekstu alfanumerycznego, który następnie należy owinąć w wyrażenie regularne po stronie serwera, aby umożliwić np. Zapytania „zaczyna się od”, „zawiera” lub „kończy się na” lub coś takiego.
  4. Możesz zezwolić tylko na jedno równoległe zapytanie na użytkownika (sesję? ip?), co prawdopodobnie pomogłoby trochę przeciwko śmiertelnym atakom DoS, ale z pewnością nie przeciwko rozproszonym... Lub możesz nawet zezwolić tylko na jedno równoległe wywołanie tego punkt końcowy w całym systemie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose zaludniają po zapisaniu

  2. Operatory porównania MongoDB z wartością null

  3. Jak odinstalować mongodb z Windows

  4. MongoDB/NoSQL:przechowywanie historii zmian dokumentów

  5. MongoDB — filtrowanie zawartości wewnętrznej tablicy w zestawie wyników