C# ASP.NET web窗体应用程序中文本控件的全局验证

C# ASP.NET web窗体应用程序中文本控件的全局验证,c#,jquery,asp.net,validation,xss,C#,Jquery,Asp.net,Validation,Xss,我有一个传统的ASP.NET应用程序(VS2005),大约有62个页面和84个文本框控件(每页2到6个文本框)。我希望实现验证以防止提交特殊字符,否则会导致XSS漏洞。是否有一种方法可以一次性实现适用于整个应用程序中所有textbox控件的全局验证功能?(尝试避免每个textbox使用一个验证器,最大限度地减少对现有代码的更改) 提前感谢您可以使用继承来解决此问题: 步骤1:在基类中创建静态方法 // Return true if is in valid e-mail format. publi

我有一个传统的ASP.NET应用程序(VS2005),大约有62个页面和84个文本框控件(每页2到6个文本框)。我希望实现验证以防止提交特殊字符,否则会导致XSS漏洞。是否有一种方法可以一次性实现适用于整个应用程序中所有textbox控件的全局验证功能?(尝试避免每个textbox使用一个验证器,最大限度地减少对现有代码的更改)


提前感谢

您可以使用继承来解决此问题:

步骤1:在基类中创建静态方法

// Return true if is in valid e-mail format.
public static bool IsValidEmail( string sEmail )
{       
    return Regex.IsMatch(sEmail, @"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"+ "@"+ @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$");
}
步骤2:为子类中验证所需的所有文本框分配此方法

例如:

if (this.TextboxEmail.Text.Length > 0 && 
    IsValidEmail(this.TextboxEmail.Text) == false)
{
    ErrMssg("Invalid Email");
}

您可以侦听submit事件,并在一个或多个文本框包含特定模式时阻止它:

$(function(){

    $('form').on('submit', function(e){

        var $invalidTextboxes = $('input[type="text"]').filter(function(){
            return this.value.match(/abc+d/); //your pattern here
        });

        if($invalidTextboxes.length){
            alert('invalid textbox value');
            e.preventDefault();
        }

    });

});
如果页面上有更多表单,并希望确定webforms生成的表单:


在全局级别执行验证的更好、通用的方法是借助HTTP模块

您可以添加从模块类继承的新c#类。在类内部,您可以在表单元素上添加迭代并执行所需的验证。这将帮助您在全局级别构建文本框验证的通用实现

  class XssModule : IHttpModule
    {

        #region IHttpModule Members
        public void Init(HttpApplication application)
        {
          application.PostAcquireRequestState += new EventHandler(Application_PostAcquireRequestState);
        }

        public void Dispose()
        {
        }

        #endregion

        private void Application_PostAcquireRequestState(object sender, EventArgs e)
        {

            if (HttpContext.Current.Session != null)
            {
             //Perform the iteration on the form elements here.                 
            }
        }
    }

嗯,我认为你不能在webforms中向服务器发布以
@Johan开头的内容,提示:禁用事件验证?@Johan这不仅仅是