Maison > base de données > tutoriel mysql > Comment une injection SQL peut-elle se produire dans les instructions INSERT, même avec les commentaires des utilisateurs, et comment peut-elle être évitée ?

Comment une injection SQL peut-elle se produire dans les instructions INSERT, même avec les commentaires des utilisateurs, et comment peut-elle être évitée ?

Linda Hamilton
Libérer: 2025-01-04 10:59:38
original
981 Les gens l'ont consulté

How Can SQL Injection Occur in INSERT Statements, Even with User Comments, and How Can It Be Prevented?

Injection SQL sur l'instruction INSERT avec commentaires

Lors du développement d'applications Web, il est crucial de se protéger contre les injections SQL, même avec des opérations soi-disant sûres comme Instructions INSERT qui incluent la saisie de l'utilisateur.

Dans ce scénario spécifique, où un formulaire Web d'enquête contient des zones de texte pour les commentaires, une injection SQL peut en effet se produire si le la saisie des commentaires n’est pas gérée de manière sécurisée. Imaginons qu'un utilisateur soumette le commentaire malveillant suivant :

'); DELETE FROM users; --
Copier après la connexion

Si l'instruction SQL permettant d'insérer ce commentaire est construite naïvement, cela pourrait entraîner une suppression non autorisée de tous les enregistrements utilisateur :

INSERT INTO COMMENTS VALUES(123, '"); DELETE FROM users; -- ');
Copier après la connexion

Pour éviter de telles attaques, il est essentiel d'utiliser des instructions SQL paramétrées, qui ne concatènent pas les entrées de l'utilisateur dans la chaîne de requête. Dans .NET 2.0, vous pouvez utiliser la classe SqlCommand avec des paramètres. Par exemple :

string comment = "..."; // User input
int id = 123;
string sql = "INSERT INTO COMMENTS (ID, Comment) VALUES (@id, @comment)";
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@id", id);
command.Parameters.AddWithValue("@comment", comment);
command.ExecuteNonQuery();
Copier après la connexion
  • Les paramètres @id et @comment agissent comme des espaces réservés pour les valeurs qui seront insérées.
  • La méthode AddWithValue gère automatiquement l'échappement des paramètres et garantit que les logiciels malveillants l'entrée n'est pas interprétée comme des commandes SQL.

En employant des instructions SQL paramétrées, vous pouvez maintenir de bonnes pratiques de codage, protéger contre les injections SQL et empêchez toute manipulation non autorisée de données sur votre page Web d'enquête.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal