2012-06-10 7 views
10

Per esempio, un database MySQL contiene noti problemi di sicurezza. Come si applica a un db NoSQL? per esempio. Iniezioni, xss ecc. Quali sono le misure di sicurezza che devi prendere quando usi un db NoSQL? In particolare per quanto riguarda MongoDB (con node-mongodb-native) e Node.js (utilizzando Express)Sicurezza Mongodb in node.js

E se sì, ci sono dei moduli per Node/Express che aiutano a prevenire questo?

+0

Credo che il principio "non fidarti di nessuno e in particolare dell'input dell'utente" sia ancora applicato ai database noSql. Ma questa è una domanda valida e pertinente, vorrebbe vedere alcune risposte. Grazie a @Jojje –

risposta

11

C'è un problema specifico per NodeJS, MongoDB (e alcuni altri database NoSQL che utilizzano pesantemente javascript): serveride javascript injection. Guarda here e here (pdf) per i dettagli. È più simile all'iniezione SQL rispetto all'XSS.

In breve, questo è quando l'attaccante invia javascript al tuo nodojs o mongodb quando ti aspetti solo JSON. Quindi, in teoria, il cattivo può portare il tuo servizio in down (DOS), accedere ai tuoi dati e persino al filesystem.

per prevenire tali attacchi si deve:

  1. Evitare di creare “ad hoc” JavaScript comandi concatenando sceneggiatura con l'input dell'utente.
  2. Convalida l'input dell'utente utilizzato nei comandi SSJS con le espressioni regolari.
  3. Evitare l'uso del comando JavaScript eval. In particolare, durante l'analisi dell'input JSON, utilizzare un'alternativa più sicura come JSON.parse.