2012-06-10 29 views
10

Por ejemplo, una base de datos MySQL presenta problemas de seguridad conocidos. ¿Cómo se aplica esto a un db NoSQL? p.ej. Inyecciones, xss, etc. ¿Cuál es la medida de seguridad que debe tomar al usar un db NoSQL? Específicamente con respecto a MongoDB (con node-mongodb-native) y Node.js (usando Express)Seguridad de Mongodb en node.js

Y si es así, ¿hay algún módulo para Node/Express que ayude a prevenir esto?

+0

Creo que el principio "no confíes en nadie y especialmente en la entrada del usuario" todavía se aplica a las bases de datos no SQL también. Pero esta es una pregunta buena y relevante, me gustaría ver algunas respuestas. Gracias @Jojje –

Respuesta

11

Existe un problema específico para NodeJS, MongoDB (y algunas otras bases de datos NoSQL que usan mucho javascript): Serveride javascript injection. Mire here y here (pdf) para más detalles. Es más como inyección SQL que XSS.

En breve, es cuando el atacante envía javascript a su nodejs o mongodb cuando solo está esperando JSON. Así que, teóricamente, el malo puede bajar tu servicio (DOS), acceder a tus datos e incluso al sistema de archivos.

Para evitar este tipo de ataques que tienen que:

  1. Evitar la creación de “ad-hoc” comandos JavaScript mediante la concatenación de la escritura con la entrada del usuario.
  2. Valida la entrada del usuario utilizada en los comandos SSJS con expresiones regulares.
  3. Evite el uso del comando JavaScript eval. En particular, al analizar la entrada JSON, use una alternativa más segura como JSON.parse.
Cuestiones relacionadas