sql >> Database >  >> RDS >> Mysql

Wat zijn best practices voor het voorkomen van SQL-injectie in node-mysql?

Onthoud dat SQL-injecties worden veroorzaakt doordat vijandige strings worden geïnterpreteerd als opdrachten, niet door het blokkeren van opdrachten. Weet je zeker dat je de originele string terugkrijgt, niet een verstrengde versie?

Er is bijvoorbeeld een enorm verschil tussen deze twee:"test" en "'test'" .

Over het algemeen worden alleen schadelijke tekens geëscaped, de rest wordt ongewijzigd gelaten.

Het gebruik van de low-level driver kan het beste worden vermeden. Probeer en gebruik een bibliotheek zoals Sequelize om wat abstractie en meer ondersteuning te bieden. Die module ondersteunt tijdelijke aanduidingen die over het algemeen een probleem maken met ontsnappen, het wordt automatisch afgehandeld.

Zie het gedeelte over onbewerkte zoekopdrachten met vervangingen waar je de mogelijkheid hebt om dit te doen:

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

Er is geen risico dat gebruikersgegevens doorlekken, omdat u deze hebt opgegeven als een expliciete waarde die correct wordt verwerkt, en niet als een inline-tekenreeks in de query.



  1. Spotlight Cloud instellen en efficiënt problemen oplossen met SQL Server

  2. SQL-queryfout:"haakje rechts ontbreekt ontbreekt"

  3. PDO::PARAM voor type decimaal?

  4. SQL krijgt laatste berichten van/naar bepaalde gebruiker