sql >> Databáze >  >> RDS >> Mysql

Jaké jsou osvědčené postupy pro zabránění vkládání SQL v node-mysql?

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.



  1. Získejte typ vrácených dat v dotazu MySQL

  2. MySQL 8 běžné tabulkové výrazy CTE

  3. PostgreSQL procedurální jazyk C nenalezen

  4. (Postgresql) proveďte spouštěcí funkci tabulky vložení hodnoty ID změněného řádku do tabulky protokolu pro vlastní replikaci