sql >> Databasteknik >  >> RDS >> Mysql

Vad är bästa praxis för att förhindra SQL-injektion i node-mysql?

Kom ihåg att SQL-injektioner orsakas av fientliga strängar som tolkas som kommandon, inte av blockerande kommandon. Är du säker på att du får tillbaka den ursprungliga strängen, inte en strängad version?

Det är till exempel en enorm skillnad mellan dessa två:"test" och "'test'" .

I allmänhet undviks endast skadliga karaktärer, resten lämnas som de är.

Det är bäst att undvika att använda lågnivådrivrutinen. Försök använda ett bibliotek som Sequelize för att ge lite abstraktion och mer stöd. Den modulen stöder platshållarsatser som i allmänhet gör att escape är ett icke-problem, det hanteras automatiskt.

Se avsnittet om råfrågor med ersättningar där du har möjlighet att göra detta:

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

Det finns ingen risk för att användardata läcker igenom eftersom du har angett det som ett explicit värde som hanteras korrekt, inte en inline-sträng i frågan.



  1. Hur kan jag importera en databas med MySQL från terminal?

  2. Mysql radera med subquery

  3. Hur man konverterar en sträng till hexadecimal i MySQL – HEX()

  4. mysql returrader som matchar år månad