MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête MongoDB $regex et exploits potentiels

Mon intuition assez personnelle me dit :Ne vous embêtez pas. Mais encore une fois, si vous le faites quand même ou si vous devez le faire, voici quelques suggestions sur la façon de gérer cette exigence :

  1. Vous pouvez définir une durée maximale d'exécution d'une requête pour l'utilisation de maxTimeMS() .
  2. Vous pouvez essayer de nettoyer l'entrée regex, mais je doute qu'il existe des bibliothèques qui pourraient vous aider avec cela étant donné les variations infinies de requêtes complexes potentiellement longues. Limiter la longueur d'une expression régulière peut également aider, mais d'un autre côté, cela va probablement à l'encontre de l'objectif de permettre à un utilisateur de rechercher facilement à l'aide de filtres arbitraires.
  3. Vous pouvez provisionner des entrées de requête plus structurées qui, par exemple, autoriser uniquement un utilisateur à saisir un seul texte alphanumérique que vous envelopperiez ensuite dans une expression régulière côté serveur pour permettre, par exemple, "commence par", "contient" ou "se termine par" des requêtes ou quelque chose.
  4. Vous pourriez autoriser une seule requête parallèle par utilisateur (session ? IP ?) ce qui aiderait probablement un peu contre les attaques DoS fatales mais certainement pas contre les attaques distribuées... Ou vous pourriez même autoriser un seul appel parallèle de cela point de terminaison sur l'ensemble du système.