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
Libérer: 2024-12-04 06:53:11
original
263 Les gens l'ont consulté

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);
Copier après la connexion

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)";
Copier après la connexion

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