2010-11-12 9 views
11

esiste un modello comune in Java per evitare gli attacchi di mongoDB injection?mongoDB injection

Grazie

+1

Potete chiarire la domanda con la lingua con cui intendete interfacciare mongo? –

+0

domanda aggiornata – Mark

risposta

16

Utilizzare uno dei driver supportati. Non deserializzare le stringhe come JSON e passarle come query, ad es. Dont' fare questo (in Ruby):

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

dove query_type e parameters sono stringhe proveniente da un formulario. Dovresti essere criminalmente stupido per fare questo però.

Poiché non esiste un linguaggio di query in quanto tale, non esiste la stessa stanza per l'iniezione. Parte del motivo per cui gli attacchi di SQL injection sono possibili è che l'azione da intraprendere (SELECT, UPDATE, DELETE, ecc.) Fa parte della stringa di query. MongoDB e molti altri database più recenti non funzionano così, invece l'azione fa parte dell'API. Laddove i driver SQL hanno solo query e in alcuni casi exec, MongoDB ha find, update, insert e remove.

1

La maggior parte dei piloti sono setup dove si costruisce query come la rappresentazione lingue dei documenti BSON. In quali lingue hai intenzione di usare mongo?

1

sì, utilizzando la ricerca regex. Es: diciamo che controlli tramite nome utente e non stai usando EQ op. Se passo [a-z], ad esempio, eviterò la tua azione di login :).

Ma in ogni caso, dipende molto dalla logica di come vengono implementate le cose nella soluzione.