2015年11月12日 星期四

【ASP.NET】具有潛在危險Request.Form 問題處理

Framework 4.0 環境 、web form

具有潛在危險Request.Form 問題處理 出現狀況:
當網址參數有特殊 html tag 標籤:比如
等....,就會出現訊息


而我在web.config error page 無法攔截 ,導致呈現系統的原始錯誤訊息

處理方式有幾招

【第一招】
解決1:頁面上加上:ValidateRequest="false"
<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1"

PS.pages validateRequest單一頁面開了洞,有資安大問題

【第二招】
解決2:web.config 加上紅色兩行

system.web 裡面加
1.第二招之1
httpRuntime requestValidationMode="2.0"
若不行再加上以下
pages validateRequest="false" 等同第1招,但是是全網站

參考網址說明:http://shiyousan.com/post/635563669112062894

Ps.pages validateRequest 缺點資訊安全開了個門,requestValidationMode降低驗證方法

【第三招】
解決3:程式必需特別加寫 Page_Error 裡面處理

PS.在程式加寫ERROR 訊息,轉頁動作,有點麻煩


【第四招】
解決4:在Global 檔裡面處理

Application_Error 事件裡面加上
            if (typeof(System.Web.HttpRequestValidationException) == Server.GetLastError().GetType())
            {
                logger.Info("Ezland.Web: application error");
                logger.Info(Server.GetLastError().Message);
                Response.Redirect("~/ErrorPage.aspx");

            }
PS.最好的解法

流程是 頁面 ERROR  沒有特別寫,會到web.config ,Web.config 失效的話會導向Global Application_Error 事件處理