2010-09-20 83 views
1

我們正在運行一個網站,大約有6000-7000人次同時在線(這是爲了表明大小)禁用ASP.Net Request的驗證

從ASP.Net已經切換爲3.5〜4.0,我們頓時臉色一質量如下:

從客戶端(>)檢測到有潛在危險的Request.Path值。

它們都是損壞的網址,並且似乎包含某種HTML或JavaScript引發到其他有效的網址。

例如,我們有一個這樣的:

/UI /表格/用戶/圖片/功能(VAL){風險結果= NULL; for(var i = 0; i < this.length; i ++){if(this [i] === val){result = this [i]; this.splice(我

正如你可以看到它是一個相對URL,它的有效期到/照片/但是功能(VAL)等是從的prototype.js它通常包含在一個功能

我們不能重新創建這個問題,但是這會導致成千上萬的異常,我們寧願不使用這些異常,因爲日誌過程需要時間,而且大量的「不相關的」異常導致我們的日誌變得更加困難

因此,我認爲我們沒有其他選擇而不是禁用驗證 - 所以問題是如何?

我不想完全禁用請求驗證,因爲那樣也會禁用發佈表單值的驗證。

非常感謝提前任何幫助:-)

回答

3

如果此功能是您的網站的一部分(張貼特殊字符,一些網頁),那麼你可以添加以下到你的web.config:

<httpRuntime requestValidationMode="2.0" /> 

這將禁用標記爲ValidateRequest="false"的頁面的請求驗證。在ASP.NET 4.0中,您需要此屬性,或者即使您禁用頁面請求驗證,您也會遇到異常。

另一方面,如果這些異常是針對您的網站的攻擊,那麼不要做任何事情,並讓ASP.NET框架放棄那些危險的請求。

+0

我忘了提及我已經設置了這個: - /然而這個功能肯定不是網站的一部分 - 但是普通用戶坦白地說,沒有足夠的智能來執行XSS攻擊,所以我認爲這是某種瀏覽器問題。 – Steffen 2010-09-20 06:31:20

+0

普通用戶可能不夠聰明,無法執行XSS攻擊,但足夠智能,可以在地址輸入字段中輸入「<」。 – 2010-09-20 06:35:15

+0

heh是真的,但是URL中包含的腳本是prototype.js的一小部分,所以我懷疑它來自用戶。它如何進入URL我不知道。 – Steffen 2010-09-20 07:00:00