请大侠们看看这段代码如何防注入?
下面是一段search.aspx的后台代码,search.aspx.cs,请大侠们看看怎么修改能防止搜索型注入。
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace Maticsoft.Web
{
public partial class search : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if ((Request.Params["keyword"] != null) && (Request.Params["keyword"].ToString() != ""))
{
string keyword = Request.Params["keyword"];
HiddenField1.Value = keyword;
showlist(keyword);
Label1.Text = "关键字:<font color='red'>" + keyword + "</font>";
}
}
/// <summary>
/// 显示列表
/// </summary>
private void showlist(string keyword)
{
Maticsoft.BLL.NewsManage.News bll = new Maticsoft.BLL.NewsManage.News();
keyword = keyword.Replace("'", "''");
string sql = "select * from T_News where Dormancy='false' and heading like '%" + keyword.ToString() + "%' order by IssueDate desc";
DataTable dt = bll.pager(AspNetPager1.CurrentPageIndex, AspNetPager1.PageSize, sql);
System.Data.DataView dv = new System.Data.DataView(dt);
Repeater1.DataSource = dv;
Repeater1.DataBind();
string sql1 = "select count(*) from T_News where Dormancy='false' and heading like '%" + keyword.ToString() + "%'";
AspNetPager1.RecordCount = bll.gettotal(sql1);
}
protected string FormatDatetimeString(string str)
{
DateTime dt = new DateTime();
dt = DateTime.Parse(str);
return dt.ToShortDateString();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
showlist(HiddenField1.Value);
}
}
}
我知道是sql语句那出了问题,但不知道怎么改。
------解决方案--------------------
用参数化SQL即可,简单用法:http://www.cnblogs.com/asdlx/archive/2010/05/14/1735410.html。