asp.net 防sql注入问题

DareOnly 2009-01-18 11:13:26


今天在网上找了下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;



不知道什么问题。。。
...全文
124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaosong8023 2009-01-19
  • 打赏
  • 举报
回复
只要避免用字符串连接拼sql语句就可以了``
可以用SqlParameter对象来传递参数``
DareOnly 2009-01-18
  • 打赏
  • 举报
回复
参数传递我用的,,我就是想解决我上面提到的问题
winner2050 2009-01-18
  • 打赏
  • 举报
回复
过滤是十分消极的方法.


如果出现英文:
You And Me
I'm master
join us
delete old Num

就被当作非法入侵了.
ldfqq 2009-01-18
  • 打赏
  • 举报
回复
使用带参数的存储过程
huxuanhui 2009-01-18
  • 打赏
  • 举报
回复
不知道怎么回事
你调试下
这种方法 还没有见过

学习一下
lw7210 2009-01-18
  • 打赏
  • 举报
回复
把提交的查询中的单引号替换为双引号

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧