none
我在Global.asax中写里一下方法? RRS feed

  • 问题


  • 我在Global.asax中写里一下方法?


    #region


    protected void Application_BeginRequest(object sender, EventArgs e)
            {
                this.isValidParameter(ConfigurationSettings.AppSettings["SqlParameters"], ConfigurationSettings.AppSettings["SpecialParameters"]);
            }
            private void isValidParameter(string sql, string special)
            {
                bool flag = false;
                string[] error = null;
                foreach (string strForm in this.Request.Form)
                {
                    if ("__VIEWSTATE,__EVENTTARGET,__EVENTARGUMENT,__PREVIOUSPAGE,__EVENTVALIDATION".IndexOf(strForm) > -1 || Request.Form[strForm].Trim().Equals("")) continue;
                    if (this.CheckKey(Request.Form[strForm], sql, special))
                    {
                        flag = true;
                        error = new string[] { "Form", strForm };
                        break;
                    }
                }
                foreach (string strQuery in this.Request.QueryString)
                {
                    if (Request.QueryString[strQuery].Trim().Equals("")) continue;
                    if (this.CheckKey(Request.QueryString[strQuery], sql, special))
                    {
                        flag = true;
                        error = new string[] { "QueryString", strQuery };
                        break;
                    }
                }
                Application["ErrorParameters"] = error;
                if (flag) Server.Transfer("~/Error.aspx");
            }

            private bool CheckKey(string key, string StrKey, string StrRegex)
            {
                return (Regex.IsMatch(key, StrKey, RegexOptions.IgnoreCase) || Regex.IsMatch(key, StrRegex) ? true : false);      
            }


    #endregion


    在web.config文件中也配置了


    <appSettings>
    <add key="SqlParameters" value="delete|from|count\(|drop table|update|truncate|mid\(|char\(|xp_cmdshell|exec master|netlocalgroup administrators|net user" />
        <add ke="SpecialParameters" value="[\{|\}|!|\']"/>
      </appSettings>


    假如说:我现在有一个  a.aspx的界面,就是做一个验证登陆,因为我要通过Global.asax 去过滤一些关键字和符号 。  我如何去通过上叙.asax文件处理

    2009年6月15日 7:17

答案

全部回复