Maison >base de données >tutoriel mysql >Pourquoi « AddWithValue() » est-il préféré à « Add() » pour empêcher l'injection SQL dans MySQL ?

Pourquoi « AddWithValue() » est-il préféré à « Add() » pour empêcher l'injection SQL dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 06:53:11268parcourir

Why is `AddWithValue()` Preferred Over `Add()` for Preventing SQL Injection in MySQL?

Command.Parameters.Add() est obsolète : utilisation de AddWithValue() dans l'injection de requêtes MySQL

L'utilisation de Command.Parameters.Add () dans les requêtes MySQL est obsolète pour des raisons de sécurité. Pour garantir la sécurité de l'injection de requêtes, il est recommandé d'utiliser plutôt la méthode AddWithValue().

Voici comment mettre à jour votre code pour utiliser AddWithValue() :

string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";
command.CommandText = SQL;
command.Parameters.AddWithValue("@mcUserName", mcUserNameNew);
command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew);
command.Parameters.AddWithValue("@twUserName", twUserNameNew);
command.Parameters.AddWithValue("@twUserPass", twUserPassNew);

En utilisant AddWithValue() , vous éliminez le risque d'inclure des caractères spéciaux ou des commandes SQL malveillantes dans votre requête, empêchant ainsi les attaques par injection SQL.

La requête SQL d'origine, qui encapsulait le les espaces réservés avec des guillemets simples, constituaient également une faille de sécurité. Le format correct pour une requête SQL dans MySQL consiste à utiliser des guillemets (`) au lieu de guillemets simples pour les noms de champs et de tables. Par conséquent, la requête SQL mise à jour devrait ressembler à ceci :

string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";

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!

Déclaration:
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