Pamatujte, že injekce SQL jsou způsobeny nepřátelskými řetězci, které jsou interpretovány jako příkazy, nikoli blokujícími příkazy. Jste si jisti, že získáváte zpět původní řetězec, nikoli verzi s řetězcem?
Například mezi těmito dvěma je obrovský rozdíl:"test"
a "'test'"
.
Obecně se uniknou pouze škodlivé postavy, zbytek zůstane tak, jak je.
Je lepší se vyhnout použití nízkoúrovňového ovladače. Vyzkoušejte a použijte knihovnu jako Sequelize poskytnout určitou abstrakci a větší podporu. Tento modul podporuje zástupné příkazy, které obecně činí escapování bez problému, je zpracováno automaticky.
Viz část o nezpracované dotazy s náhradami kde to máte možnost:
sequelize.query('SELECT * FROM projects WHERE status = ?',
{ replacements: ['active'], type: sequelize.QueryTypes.SELECT }
).then(function(projects) {
console.log(projects)
})
Neexistuje žádné riziko úniku uživatelských dat, protože jste je zadali jako explicitní hodnotu, která je správně zpracována, nikoli jako vložený řetězec v dotazu.