sql >> Database teknologi >  >> RDS >> Mysql

Hvad er bedste praksis for at forhindre SQL-injektion i node-mysql?

Husk, at SQL-injektioner er forårsaget af fjendtlige strenge, der fortolkes som kommandoer, ikke af blokeringskommandoer. Er du sikker på, at du får den originale streng tilbage, ikke en strenget version?

For eksempel er der en enorm forskel mellem disse to:"test" og "'test'" .

Generelt undslippes kun skadelige karakterer, resten efterlades som de er.

Det er bedst at undgå at bruge lav-niveau-driveren. Prøv at bruge et bibliotek som Sequelize at give noget abstraktion og mere støtte. Dette modul understøtter pladsholderudsagn, der generelt gør escape til et ikke-problem, det håndteres automatisk.

Se afsnittet om råforespørgsler med erstatninger hvor du har mulighed for at gøre dette:

sequelize.query('SELECT * FROM projects WHERE status = ?',
  { replacements: ['active'], type: sequelize.QueryTypes.SELECT }
).then(function(projects) {
  console.log(projects)
})

Der er ingen risiko for, at brugerdata siver igennem, fordi du har angivet det som en eksplicit værdi, der er håndteret korrekt, ikke en indlejret streng i forespørgslen.



  1. System.Data.OracleClient kræver Oracle-klientsoftware version 8.1.7 eller nyere

  2. Hvordan bruger man mysqli_query() i PHP?

  3. SQL script til at oprette indsæt script

  4. TO_CHAR(tal) Funktion returnerer ORA-01722:ugyldigt tal