Sto giocando con node.js, express e mongoose.Quanto è pericolosa una query mongo che viene alimentata direttamente da una stringa di query URL?
Al fine di ottenere qualcosa in esecuzione in questo momento sto passando l'oggetto stringa query Express direttamente a una funzione di ricerca mangusta. Quello di cui sono curioso è quanto pericolosa sarebbe questa pratica in un'app live. So che un RDBMS sarebbe estremamente vulnerabile all'iniezione SQL. A parte il buon consiglio di "disinfettare le immissioni" come il male è questo codice:
app.get('/query', function (req, res) {
models.findDocs(req.query, function (err, docs) {
res.send(docs);
});
});
Il che significa che aa richiesta GET a http://localhost:8080/query?name=ahsteele&status=a
sarebbe solo spingere il seguente nella funzione findDocs:
{
name: 'ahsteele',
status: 'a'
}
Questo si sente icky per molte ragioni, ma quanto è pericoloso? Qual è la procedura migliore per passare i parametri di query a mongodb? Esprime qualsiasi sanitizzazione immediata?
Hai mai sentito parlare di iniezione da parte dell'operatore? In che modo qualcuno potrebbe formulare una query all'interno dell'URL che potrebbe raccogliere dati dai dati molto simili all'esempio dei tavoli da bobby? – Sammaye
Una volta accettata la sanitizzazione che deve ancora essere eseguita, aggiungerei anche che si consideri che le query potrebbero causare un eccessivo uso eccessivo dei sistemi se gli indici non vengono utilizzati, ecc. – WiredPrairie