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 ?
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!