Comment empêcher l'injection SQL dans un formulaire de search dans asp

Je travaille sur un site basé sur les nouvelles. Et le site a une barre de search pour le Newstitle et je ne veux pas laisser les injections SQL se produire sur elle.

Ce que je fais est d'get le text de la textbox , puis d'utiliser une requête pour récupérer les résultats correspondants. C'est ce qui se passe lorsqu'un user clique sur le button de search:

protected void button_Click(object sender, EventArgs e) { ssortingng connectionSsortingng = ConfigurationManager.ConnectionSsortingngs["connection"].ConnectionSsortingng; SqlConnection conn = new SqlConnection(connectionSsortingng); try { SqlCommand comm = new SqlCommand("SELECT * FROM news Where newstilte LIKE '%" + searchbox.text + "%'", conn); conn.Open(); SqlDataReader reader = comm.ExecuteReader(); myRepeater.DataSource = reader; myRepeater.DataBind(); reader.Close(); } catch (Exception exception) { Response.Write(exception.ToSsortingng()); } finally { conn.Close(); } } 

Comme vous pouvez le voir, j'utilise ensuite un répéteur pour montrer les résultats. Je me request comment puis-je empêcher l'injection SQL dans la partie où les gens écrivent dans la textbox .

UTILISER DES QUESTIONS PARAMÉTRÉES COMME CI-DESSOUS:

 protected void button_Click(object sender, EventArgs e) { ssortingng connectionSsortingng = ConfigurationManager.ConnectionSsortingngs["connection"].ConnectionSsortingng; SqlConnection conn = new SqlConnection(connectionSsortingng); try { SqlCommand comm = new SqlCommand("SELECT * FROM news Where newstilte LIKE '%' + @newstilte + '%'", conn); cmm.Parameters.AddWithValue("@search",searchbox.text) ; conn.Open(); SqlDataAdapter reader = comm.ExecuteReader(); myRepeater.DataSource = reader; myRepeater.DataBind(); reader.Close(); } catch (Exception exception) { Response.Write(exception.ToSsortingng()); } finally { conn.Close(); } } 

MODIFIER:

Vous pouvez également utiliser le suivant si vous avez un type de ressortingction de type de données pour la search.

 cmm.Parameters.Add(new SqlParameter("@search", SqlDbType.VarChar)); cmm.Parameters["@search"].Value = searchbox.text; 

Jetez un oeil à ce doccument.

Essayer

  SqlCommand comm = new SqlCommand("SELECT * FROM news Where newstilte LIKE '%' + @newstilte + '%'", conn); comm.Parameters.AddWithValue("@newstilte",searchbox.text) 

Utilisez des procédures stockées avec des parameters.

bibliothèque SQL .net correctement

 SqlCommand comm = new SqlCommand("StoredProcedureName") comm.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@Parameter", Value) 

La bibliothèque .net devrait gérer la plupart des injections.