Asp.Net Global中事件以及全局过滤恶意提交

在Asp.net 项目程序的Global.asax文件中的事件(按照执行顺序):

  Application_Start:应用程序启动时激发 ,只能触发一次,如果应用程序不重启就不会再触发。(通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计的初始化,历史访问人数统计的初始化等等均可在这里定义.)

  Application_BeginRquest:http请求开始时激发 ,并且每发生一次请求就会触发。(通常在该方法里过滤一些数据,比如特殊字符过滤、sql注入)
  Application_AuthenticateRequest: 应用程序批准http请求时激发 ,事件发出信号表示配置的身份验证机制已对当前请求进行了身份验证。预订 AuthenticateRequest事件可确保在处理附加的模块或事件处理程序之前对请求进行身份验证。
  Session_Start: 会话启动时激发(与用户关联的,每个用户访问时它就触发一次。可以用来创建用户日志,记录访问网站用户的IP地址以及计算在线访问人数总数) 
  Application_EndRequest:Http请求结束时激发 
  Session_End:会话结束时激发(使用了session.abandon(),或session超时用户退出后均可触发) 
  Application_End:应用程序结束时激发。(网站关闭,或重启时,会触发该方法.)
  Application_Error: 发生错误时激发

全局过滤恶意提交例子:

  protected void Application_BeginRequest(Object sender, EventArgs e)
  {
    if (Request.QueryString.Count > 0)
    {
       foreach (string i in Request.QueryString)
       {
         goError(Request.QueryString[i]);
       }
    }

    //遍历Post参数,隐藏域除外
    if (Request.Form.Count > 0)
    {
       foreach (string i in this.Request.Form)
       {
         if (i == "__VIEWSTATE") continue;
         goError(Request.Form[i].ToString());
       }
    }

    //cookie参数
    if (Request.Cookies != null)
    {
       for (int i = 0; i < Request.Cookies.Count; i++)
        {
           if (Request.Cookies.Keys[i] == "ManageCookie") continue;
           goError(Request.Cookies[Request.Cookies.Keys[i]].Value);
       }
    }
  }

  

  /// <summary>
  ///SQL注入过滤
  /// </summary>
  /// <param name="InText">要过滤的字符串 </param>
  /// <returns>如果参数存在不安全字符,则返回true </returns>
  public void SqlFilterNew(string InText)
  {
    Response.Write(InText);
    string word = "and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join|;|'|--";//这里加要过滤的SQL字符
    if (!string.IsNullOrEmpty(InText))
    {
       foreach (string i in word.Split('|'))
       {
         InText.Replace(i, "");
       }
    }
  }

  private void goError(string text)
  {
    if (SqlFilter(text))
    {
      filterContext.Result = new EmptyResult(); //阻止action继续执行
       System.Web.HttpContext.Current.Response.Redirect("/Error/Index");
       System.Web.HttpContext.Current.Response.End();
    }
  }

  

  






 

转载于:https://www.cnblogs.com/wyhBlog/p/5133614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值