Maison > base de données > tutoriel mysql > le corps du texte

Comment insérer en toute sécurité des données dans MySQL à l'aide de C# : AddWithValue vs Placeholders ?

DDD
Libérer: 2024-11-07 17:24:03
original
723 Les gens l'ont consulté

How to Securely Insert Data into MySQL Using C#: AddWithValue vs. Placeholders?

C# avec MySQL : utilisation des paramètres INSERT pour une saisie sécurisée des données

En programmation C#, l'insertion de données dans une base de données MySQL nécessite une attention particulière pour éviter vulnérabilités de sécurité. Ce guide aborde le problème de la liaison des paramètres dans une commande INSERT, fournissant une solution sécurisée et efficace.

Le problème

Lors de l'utilisation de MySqlCommand, spécification des paramètres à l'aide de la méthode Add sans utiliser AddWithValue ou transmettre le nom de paramètre correct, cela peut entraîner l'insertion de valeurs nulles ou des erreurs de syntaxe. Cela peut compromettre l'intégrité des données et exposer l'application à des attaques par injection SQL.

La solution

Pour garantir une liaison sécurisée des données, deux approches sont recommandées :

Méthode AddWithValue :

En utilisant la méthode AddWithValue, vous pouvez insérer en toute sécurité des valeurs dans les paramètres sans vous soucier des noms de paramètres ou de la conversion des types de données.

string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.AddWithValue("@person", "Myname");
comm.Parameters.AddWithValue("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
Copier après la connexion

Utiliser ? Espace réservé :

Vous pouvez également utiliser le ? espace réservé dans la commande INSERT et ajoutez les paramètres comme suit :

string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(?person, ?address)";
comm.Parameters.Add("?person", "Myname");
comm.Parameters.Add("?address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
Copier après la connexion

En utilisant l'une ou l'autre approche, vous pouvez insérer en toute sécurité des données dans une base de données MySQL, empêchant ainsi l'insertion de valeurs nulles et les vulnérabilités d'injection SQL.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal