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

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

DDD
DDDoriginal
2024-11-07 17:24:03722parcourir

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();

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();

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!

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