C# ASP.NET web窗体应用程序中文本控件的全局验证
我有一个传统的ASP.NET应用程序(VS2005),大约有62个页面和84个文本框控件(每页2到6个文本框)。我希望实现验证以防止提交特殊字符,否则会导致XSS漏洞。是否有一种方法可以一次性实现适用于整个应用程序中所有textbox控件的全局验证功能?(尝试避免每个textbox使用一个验证器,最大限度地减少对现有代码的更改)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
提前感谢您可以使用继承来解决此问题: 步骤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这不仅仅是