當前位置:編程學習大全網 - 源碼下載 - asp.net 過濾html代碼

asp.net 過濾html代碼

禁止 validateRequest 並不好,有壹部分是真的需要用戶輸入"<>"之類的字符。這就不必說了。還有壹部分其實並不是用戶允許輸入那些容易引起XSS的字符,而是討厭這種報錯的形式,畢竟壹大段英文加上壹個ASP.Net典型異常錯誤信息,顯得這個站點出錯了,而不是用戶輸入了非法的字符,可是自己又不知道怎麽不讓它報錯,自己來處理報錯。

對於希望很好的處理這個錯誤信息,而不使用默認ASP.Net異常報錯信息的程序員們,妳們不要禁用validateRequest=false。

正確的做法是在妳當前頁面添加Page_Error()函數,來捕獲所有頁面處理過程中發生的而沒有處理的異常。然後給用戶壹個合法的報錯信息。如果當前頁面沒有Page_Error(),這個異常將會送到Global.asax的Application_Error()來處理,妳也可以在那裏寫通用的異常報錯處理函數。如果兩個地方都沒有寫異常處理函數,才會顯示這個默認的報錯頁面呢。

舉例而言,處理這個異常其實只需要很簡短的壹小段代碼就夠了。在頁面的Code-behind頁面中加入這麽壹段代碼:

以下是引用片段:

protected void Page_Error(object sender, EventArgs e)

{

Exception ex = Server.GetLastError();

if (ex is HttpRequestValidationException)

{

Response.Write("請您輸入合法字符串。");

Server.ClearError(); // 如果不ClearError()這個異常會繼續傳到Application_Error()。

}

}

這樣這個程序就可以截獲 HttpRequestValidationException 異常,而且可以按照程序員的意願返回壹個合理的報錯信息。

這段代碼很簡單,所以我希望所有不是真的要允許用戶輸入之類字符的朋友,千萬不要隨意的禁止這個安全特性,如果只是需要異常處理,那麽請用類似於上面的代碼來處理即可。

而對於那些通過 明確禁止了這個特性的程序員,自己壹定要明白自己在做什麽,而且壹定要自己手動的檢查必須過濾的字符串,否則妳的站點很容易引發跨站腳本攻擊。

  • 上一篇:請問用java程序模擬qq登錄界面的代碼怎麽寫啊?
  • 下一篇:可定制的源代碼
  • copyright 2024編程學習大全網