2010-11-12 17 views
11

¿existe un patrón común en Java para evitar los ataques de inyección mongoDB?inyección mongoDB

Gracias

+1

¿Puede aclarar su pregunta con el idioma con el que pretende conectar a mongo? –

+0

pregunta actualizada – Mark

Respuesta

16

Utilice uno de los controladores admitidos. No deserialice las cadenas como JSON y páselos como consultas, p. 'No hacer esto (en Ruby):

collection.send(query_type, JSON.parse(parameters)) 

donde query_type y parameters son cadenas procedentes de una forma. Sin embargo, tendrías que ser criminalmente estúpido para hacer esto.

Dado que no hay lenguaje de consulta como tal, no hay la misma habitación para la inyección. Parte de la razón por la que los ataques de inyección SQL son posibles es que la acción a tomar (SELECT, UPDATE, DELETE, etc.) es parte de la cadena de consulta. MongoDB, y muchas otras bases de datos más nuevas, no funcionan así, en su lugar, la acción es parte de la API. Donde los controladores SQL solo tienen query y en algunos casos exec, MongoDB tiene find, update, insert y remove.

1

La mayoría de los conductores son de configuración donde construir consultas como la representación idiomas de los documentos BSON. ¿En qué idiomas pretendes utilizar mongo?

1

sí hay, mediante el uso de la búsqueda de expresiones regulares. Ejemplo: digamos que no verifica por nombre de usuario y no está utilizando EQ op. Si paso [a-z] por ejemplo, omitiré su acción de inicio de sesión :).

Pero de todos modos, depende mucho de la lógica de cómo se implementan las cosas en la solución.