我有一個傳統的ASP.NET應用程序(VS2005),大約有62頁和84個文本框控件分佈在它們之間(每頁2到6個文本框不等)。我想實施驗證以防止提交可能導致XSS漏洞的特殊字符。有沒有一種方法可以實現全局驗證功能,該功能一次適用於整個應用程序中的所有文本框控件?(儘量避免每個文本框使用一個驗證器,最小化對現有代碼的更改)。ASP.NET Web窗體應用程序中的文本控件的全局驗證
在此先感謝
我有一個傳統的ASP.NET應用程序(VS2005),大約有62頁和84個文本框控件分佈在它們之間(每頁2到6個文本框不等)。我想實施驗證以防止提交可能導致XSS漏洞的特殊字符。有沒有一種方法可以實現全局驗證功能,該功能一次適用於整個應用程序中的所有文本框控件?(儘量避免每個文本框使用一個驗證器,最小化對現有代碼的更改)。ASP.NET Web窗體應用程序中的文本控件的全局驗證
在此先感謝
您可以使用繼承來解決這個問題:
第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");
}
請再次閱讀該問題。這不是關於所有頁面中的電子郵件驗證。 – Dev
你可以監聽提交事件,並防止它在情況下,一個或多個文本框中含有一定的模式:
$(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();
}
});
});
如果你有在頁面上更多的形式,並希望找出由web表單生成的一個:
How to capture submit event using jQuery in an ASP.NET application?
更好的和通用的方式在全球範圍內進行驗證。將採取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,提示:禁用事件驗證? – naveen
@Johan它不僅僅是
Dev