2015-06-01 6 views
5

Sto usando MongoDB con NodeJS e mi chiedo se devo disinfettare i dati prima di inserire/aggiornare i documenti del database. È difficile trovare una risposta definitiva e mi chiedo se ci sono moduli Node che lo fanno bene o ho bisogno di eliminare tutte le occorrenze di $ in stringhe o semplicemente non c'è bisogno di preoccuparsi di questo. So che PHP ha dei buchi, ma sto usando la combinazione Node/Mongo (driver nativo), ma non sono ancora sicuro se devo fare qualsiasi pulizia dell'input dell'utente.Devo disinfettare l'input dell'utente prima di inserirlo in MongoDB (MongoDB + Node js combo)

risposta

3

Se memorizzate i dati come String e non li state analizzando per eseguire il comando Mongo, non vi è nulla di cui preoccuparsi.

bell'articolo su sicurezza

http://cr.yp.to/qmail/guarantee.html

L'unico problema si verifica quando si stanno recuperando l'input dell'utente, e si analizza tale ingresso a eseguire il comando Mongo, qui è necessario fare attenzione a disinfettare il input, altrimenti otterrai un attacco.

V'è un pacchetto NPM di farlo per voi

https://www.npmjs.com/package/mongo-sanitize

e l'articolo bello anche su questo

https://thecodebarbarian.wordpress.com/2014/09/04/defending-against-query-selector-injection-attacks/

1

Sì, si fa. Per ulteriori informazioni controllare questo fuori; https://www.npmjs.com/package/content-filter

Anche il metodo nativo escape() può essere utilizzato per proteggere il database.

Eseguire il frammento di codice qui sotto per vedere i risultati.

let a = "{$gt:25}" 
 
console.log(a) 
 
console.log(escape(a))