2012-05-03 29 views
1

我有一個簡單的asp.net web表單頁面,它可以截獲http請求,從查詢字符串中提取參數,根據參數進行一些檢查並重定向請求。禁用Request.Validation /編碼URL

最近,我在日誌中似乎出現HttpRequestValidationException錯誤。這是因爲我們正在使用的網址沒有編碼,並且我們已將Request.Validation設置爲true。

現在,我想停止得到這個錯誤,但我仍然想避免注入。我一直在想,在我做任何事情之前,我可以關閉Request.Validation並簡單編碼URL。這是一個有效的解決方案?另外,我應該使用什麼類型的編碼? HTML編碼或網址編碼?我猜測HTML編碼不會防止JavaScript或SQL注入,對吧?

在此先感謝。

回答

0

現在,我想停止收到此錯誤

有沒有你想停止得到這個的原因嗎?這很好 - 它告訴你一個危險的請求被抓到了。如果你想停止這些打日誌,爲什麼不吞下異常?

這會做的伎倆(Global.asax中):

void Application_Error(object sender, EventArgs e) 
{ 

    Exception exc = Server.GetLastError(); 
    if(exc.GetType() == typeof(HttpRequestValidationException)) 
    { 
     //ignore and don't write to log 
    } 

} 

這也有仍在記錄所有其他異常的優勢。

+0

那麼我攔截的請求是來自我的系統,所以我知道這些請求並不是非常危險,他們只是沒有編碼。 – user1373121