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 ?
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; --
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; -- ');
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();
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!