sql >> Base de Datos >  >> NoSQL >> MongoDB

Consulta MongoDB $regex y posibles exploits

Mi instinto bastante personal dice:No te molestes. Pero, de nuevo, si lo hace o incluso tiene que hacerlo, aquí hay algunas sugerencias sobre cómo lidiar con este requisito:

  1. Puede definir un tiempo máximo durante el cual se puede ejecutar una consulta usando maxTimeMS() .
  2. Podrías intentar desinfectar la entrada de expresiones regulares, pero dudo que haya bibliotecas que te ayuden con eso dadas las infinitas variaciones de consultas complejas potencialmente de larga duración. Limitar la longitud de una expresión regular también podría ayudar, pero, por otro lado, probablemente anule el propósito de permitir que un usuario busque convenientemente usando filtros arbitrarios.
  3. Podría proporcionar una entrada de consulta más estructurada que, p. solo permita que un usuario ingrese un solo texto alfanumérico que luego envolvería en una expresión regular en el lado del servidor para permitir, p. Consultas "comienza con", "contiene" o "termina con" o algo así.
  4. Podría permitir una sola consulta en paralelo por usuario (¿sesión? ¿IP?) solo, lo que probablemente ayudaría un poco contra los ataques DoS fatales, pero ciertamente no contra los distribuidos... O incluso podría permitir solo una sola llamada en paralelo de esa punto final en todo el sistema.