Requêtes paramétrées: une défense robuste contre l'injection SQL
La sécurité de la base de données est primordiale dans la programmation SQL. Les attaques d'injection SQL représentent une menace significative, mais les requêtes paramétrées fournissent une défense puissante. Ils y parviennent en séparant les données fournies par l'utilisateur de la commande SQL elle-même.
illustrons avec deux exemples d'insertion de données à partir d'une zone de texte:
Exemple 1: L'approche sécurisée (requête paramétrée)
<code class="language-sql">SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Cars VALUES(@TagNbr);", conn); cmd.Parameters.Add("@TagNbr", SqlDbType.Int); cmd.Parameters["@TagNbr"].Value = txtTagNumber.Text;</code>
Ici, @TagNbr
agit comme un espace réservé. La valeur de txtTagNumber
est traitée comme des données, pas du code exécutable.
Exemple 2: L'approche vulnérable (non paramétrisée)
<code class="language-sql">int tagnumber = txtTagNumber.Text.ToInt16(); INSERT into Cars values(tagnumber); </code>
Bien que la conversion en entier puisse sembler atténuer le risque, ce n'est pas une méthode infaillible. La contribution malveillante pourrait encore trouver des moyens de compromettre la requête.
Pourquoi les requêtes paramétrées sont supérieures:
Les requêtes paramétrées offrent des avantages significatifs:
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!