Prévention des injections SQL sur les instructions INSERT avec commentaires de zone de texte
Des vulnérabilités d'injection SQL peuvent survenir dans n'importe quelle instruction SQL, y compris les instructions INSERT, si elles ne sont pas gérées correctement.
Dans le contexte d'une instruction INSERT, une attaque par injection SQL peut se produire lorsqu'une entrée non fiable, telle que des commentaires saisi par les utilisateurs dans une zone de texte, est directement concaténé dans la requête SQL sans nettoyage ou validation appropriée.
Exemple d'attaque par injection SQL
Considérons un tableau de commentaires simplifié avec deux champs : un identifiant entier et une chaîne de commentaire. Une instruction INSERT pour ajouter un nouveau commentaire pourrait ressembler à ceci :
INSERT INTO COMMENTS VALUES(122, 'I like this website');
Cependant, si un utilisateur malveillant saisit le commentaire suivant :
'); DELETE FROM users; --
L'instruction SQL, sans aucun traitement, deviendrait :
INSERT INTO COMMENTS VALUES(123, ''); DELETE FROM users; -- ');
Cela amènerait l'utilisateur non seulement à ajouter un commentaire, mais également à exécuter une commande SQL malveillante qui supprime tous les enregistrements du table 'users'.
Protection contre l'injection SQL
Pour éviter les attaques par injection SQL, il est essentiel d'utiliser des instructions SQL paramétrées. Ces instructions utilisent des espaces réservés pour les entrées non fiables et la base de données gère automatiquement l'insertion de l'entrée dans la requête SQL.
Dans .NET 2.0, vous pouvez utiliser la classe SqlCommand pour exécuter des instructions SQL paramétrées. Par exemple, le code suivant insérerait un commentaire à l'aide d'une instruction SQL paramétrée :
using (SqlConnection connection = new SqlConnection("connectionString")) { connection.Open(); using (SqlCommand command = new SqlCommand("INSERT INTO COMMENTS VALUES (@Id, @Comment)", connection)) { command.Parameters.AddWithValue("@Id", 123); command.Parameters.AddWithValue("@Comment", comment); command.ExecuteNonQuery(); } }
En utilisant des instructions SQL paramétrées, vous pouvez empêcher efficacement les attaques par injection SQL en garantissant que les entrées malveillantes sont traitées en toute sécurité et ne le sont pas. affecter l'intégrité de votre base de données.
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!