今天同事遇到一個問題“檢測到有潛在危險的 Request.Form 值”,我發(fā)現(xiàn)此問題常遇到一般是在提交數(shù)據(jù)中包含有未編譯的HTML控件(不知道是不是這么理解)、特殊的符號(如“<”,“/”)。常見的情況是頁面后臺提交有/n、/t這樣的或者請求數(shù)據(jù)中包含<b/>這樣的,如果出現(xiàn)這樣的問題的原因是微軟在.net framework2.0中引入了數(shù)據(jù)提交驗證機制以防止有跨站點攻擊和危險數(shù)據(jù)。ep:<img src="javascr關(guān)于<style>也是一樣。
好了明白這是數(shù)據(jù)監(jiān)測問題那么久有一個簡單粗暴的解決方案來解決“檢測到有潛在危險的 Request.Form 值”問題,那就是取消驗證。取消驗證有倆種方式
1)在頁面 Page指令中設(shè)置validateRequest="false"
2)在全局webconfig設(shè)置
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
不過后者會將整個項目的驗證都取消,而前者是取消當(dāng)前頁面的驗證。
注:(有時候你使用的.net framework版本為4.0那么需要在webconfig設(shè)置<httPRuntime requestValidationMode="2.0" />。很多時候會忽略這點)
不過說到這里肯定有人會說這不安全,那么還有一種解決方案。
截取這個報錯信息自定義處理方式(下班了,下次在寫完給自己以后再留下資料)。
新聞熱點
疑難解答