Étape 1: Ne pas le faire Utiliser un parameterized query à la place.
Les requêtes paramétrées éliminent la plupart des risques associés aux attaques par injection SQL.
À partir du lien:
private void CallPreparedCmd() {
string sConnString =
"Server=(local);Database=Northwind;Integrated Security=True;";
string sSQL =
"UPDATE Customers SET [email protected] WHERE [email protected]";
using (SqlConnection oCn = new SqlConnection(sConnString)) {
using (SqlCommand oCmd = new SqlCommand(sSQL, oCn)) {
oCmd.CommandType = CommandType.Text;
oCmd.Parameters.Add("@sCustomerID", SqlDbType.NChar, 5);
oCmd.Parameters.Add("@sCity", SqlDbType.NVarChar, 15);
oCn.Open();
oCmd.Prepare();
oCmd.Parameters["@sCustomerID"].Value = "ALFKI";
oCmd.Parameters["@sCity"].Value = "Berlin2";
oCmd.ExecuteNonQuery();
oCmd.Parameters["@sCustomerID"].Value = "CHOPS";
oCmd.Parameters["@sCity"].Value = "Bern2";
oCmd.ExecuteNonQuery();
oCn.Close();
}
}
}
Cela étant dit, vous pouvez insérer des citations dans une chaîne en échappant les guillemets doubles comme ceci:
string newstring = " \"I'm Quoted\" ";
Les paramètres peuvent empêcher quelque chose comme cela ajouté à la fin de la requête; drop article de la table – user161433
Oui, car les paramètres ne sont pas exécutés en tant que sql littéral et sont vérifiés par type.Voir http://www.mikesdotnetting.com/Article/113/Preventing-S QL-Injection-in-ASP.NET. –