Maison >base de données >tutoriel mysql >Requêtes paramétrées ou conversion directe de texte : quelle approche empêche le mieux l'injection SQL ?
Défendre l'injection SQL : requête paramétrée ou transformation de texte directe
Dans une attaque par injection SQL, une entrée malveillante est insérée dans une requête de base de données, altérant potentiellement l'exécution prévue et exposant des données sensibles. Deux méthodes pour atténuer cette vulnérabilité incluent les requêtes paramétrées et la conversion directe de texte.
Requête paramétrée
Les requêtes paramétrées utilisent des espaces réservés (par exemple, "@TagNbr") pour représenter les valeurs qui seront remplacées avant l'exécution de la requête. Cela empêche l'entrée de l'attaquant de modifier directement l'instruction SQL.
<code>SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Cars " +"VALUES(@TagNbr);" , conn); cmd.Parameters.Add("@TagNbr", SqlDbType.Int); cmd.Parameters["@TagNbr"].Value = txtTagNumber.Text;</code>
Dans cet exemple, l'entrée de txtTagNumber est ajoutée en tant que paramètre à l'espace réservé @TagNbr, garantissant que l'entrée est correctement validée et transformée avant d'être incluse dans la requête.
Conversion de texte directe
La conversion de texte directe implique la conversion de l'entrée dans le type de données correct (par exemple, entier) avant de créer la requête.
<code>int tagnumber = txtTagNumber.Text.ToInt16(); /* EDITED */ INSERT into Cars values(tagnumber); /* then is it the same? */</code>
Bien que cette approche réduise le risque d'injection SQL, elle repose sur la gestion correcte des conversions de type par le programmeur et peut ne pas toujours être suffisante pour se protéger contre les entrées malveillantes.
Avantages des requêtes paramétrées
Les requêtes paramétrées présentent plusieurs avantages par rapport à la conversion directe de texte :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!