【发布时间】:2013-07-01 08:35:14
【问题描述】:
我正在开发一个基于新闻的网站。而且该网站有一个新闻标题的搜索栏,我不想让 SQL 注入发生在上面。
我正在做的是从 文本框 中获取文本,然后使用查询来获取匹配结果。当用户点击搜索按钮时会发生这种情况:
protected void button_Click(object sender, EventArgs e)
{
string connectionString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
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.ToString());
}
finally
{
conn.Close();
}
}
如您所见,然后我使用中继器来显示结果。我想知道如何防止人们在 文本框 中写入的部分进行 SQL 注入。
【问题讨论】:
-
如果您了解 sql 注入,您是否尝试将其输入到google?
-
@SonerGönül +1 提到了那篇出色的文章(不亚于 SO 创始人)。
-
在这个网站上进行 5 秒搜索怎么样? stackoverflow.com/questions/4018174/…
-
@user2978785:参数化查询将阻止将参数文本解释为 SQL。它将仅被解释为字符串,从而防止 SQL 注入。只需尝试一下,亲自看看 - 并阅读那篇文章!
标签: c# asp.net sql sql-server