Hay ataques de inyección contra MongoDB, pero estos se mitigan en gran medida mediante el uso de bibliotecas de adaptador de datos adecuadas. No obstante, vale la pena saber que es posible inyectar de varias maneras.
Lo primero que debes tener en cuenta es en los casos en los que construyes dinámicamente un $where
con JavaScript, usando la información del usuario. Al modificar sus entradas, pueden alterar su consulta. El segundo problema que debe manejar es la inyección de operadores como $or
(o parámetros para dichos operadores) que pueden alterar el comportamiento de la consulta. Ambos se mitigan al no usar métodos de estilo de concatenación, sino a bibliotecas que funcionan en estructuras de datos (por ejemplo, JSON).
También puede ser posible escapar del $
que precede a un operador, para proporcionar operadores alternativos. Asegúrese de que está escapando las claves correctamente si se utilizan datos de usuario en ellas.
En general, evitaría cosas como NodeJS por cualquier cosa crítica para la seguridad. No se ha diseñado teniendo en cuenta ninguna forma de seguridad, y es un proyecto joven. Si estás consumiendo MongoDB de un idioma diferente, está bien.
Para obtener más detalles, consulte Preguntas frecuentes de MongoDB .