asp.net 防sql注入问题
今天在网上找了下sql防注入的代码。文章来源是 http://www.dezai.cn/article_show.asp?ArticleID=18624
Global.asax 页代码
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
foreach (string i in this.Request.Form)
{
if (i == "__VIEWSTATE") continue;
this.goErr(this.Request.Form[i].ToString());
}
//遍历Get参数。
foreach (string i in this.Request.QueryString)
{
this.goErr(this.Request.QueryString[i].ToString());
}
}
/**/
/// <summary>
/// 校验参数是否存在SQL字符
/// </summary>
/// <param name="tm"></param>
private void goErr(string tm)
{
if (DB.SqlFilter2(tm))
this.Response.Redirect("/error.html");
}
/**/
/// <summary>
///SQL注入过滤
/// </summary>
/// <param name="InText">要过滤的字符串</param>
/// <returns>如果参数存在不安全字符,则返回true</returns>
public static bool SqlFilter2(string InText)
{
string word = "and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join";
if (InText == null)
return false;
foreach (string i in word.Split('|'))
{
if ((InText.ToLower().IndexOf(i + " ") > -1) || (InText.ToLower().IndexOf(" " + i) > -1))
{
return true;
}
}
return false;
}
然后运行程序 出现错误
请求在此上下文中不可用
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 请求在此上下文中不可用
源错误:
行 6: {
行 7: // 在应用程序启动时运行的代码
行 8: foreach (string i in this.Request.Form)
行 9: {
行 10: if (i == "__VIEWSTATE") continue;
不知道什么问题。。。