2012-12-12 93 views
2

我們有一個具有搜索表單的Web應用程序,允許用戶輸入一些文本,並根據他們輸入的內容限制結果。最近我們開始收到以下錯誤:System.Web.HttpRequestValidationException:從機器人的客戶端檢測到潛在危險的Request.Form值?

System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$results_search="...967.hcpm, <a href="http://www...."). 

此錯誤是發生在整個一天,每天,這似乎是從一個機器人來了,看着錯誤好像機器人是將HTML AHREF鏈接到搜索字段並嘗試搜索,導致錯誤。

周圍搜索後,我看到有中,我們可以解決這個問題,要麼使用jQuery或轉動validateRequest爲false,然後在頁面後面的代碼中使用的HTMLEncode兩種方式。有誰知道,如果jQuery代碼將在機器人上工作?我不確定機器人如何做到這一點,如果它擊中頁面並單擊按鈕或以其他方式發送請求,因爲按鈕單擊是導致回發觸發搜索的原因,所以我們使用POST,因此無法通過發送url到搜索頁面,頁面只是回發到自己,在回發時是搜索完成時。

+1

只是忽略或阻止機器人?爲什麼你會考慮禁用驗證(也許我錯過了什麼)? –

+2

禁用validateRequest將結束添加行到您的日誌並給bot更多的自由。不是我所說的雙贏。 – lboshuizen

+0

我們使用ELMAH來接收錯誤,所以它充斥着我們的收件箱,這就是爲什麼我們想到了這個問題,否則我們會忽略它。不想停止ELMAH,因爲我們可能會錯過真正的錯誤。 – Paritosh

回答

2

一個解決方案,我們不得不爲記錄對IP這些錯誤,並在應用程序級別阻止訪問,如果他們提交了太多。

這不是防彈但減少我們有個數。但是它仍然涉及工程和處理,但是可以節省你不得不使用IIS的時間。

但是有一點確實可以做。他們會將你的表格封殺,阻止IP只是一個短期解決方案,他們會打你多IP等等。只要確保你的驗證是緊密的,你不容易受到注入攻擊等事情的影響而忽略它,這是一個事實這些日子裏的生活。

我們經常被打到這個樣子,尤其是像中國這樣的地方。

1

你可以嘗試另一種解決方案。當發生此類錯誤時,它會將您的頁面重定向到默認網址(請在defaultRedirect=" "中設置頁面)。

<system.web> 
    <customErrors mode="On" defaultRedirect="~/Home/Index"/> 
</system.web> 

因此,機器人將不再能夠垃圾郵件您的收件箱或它現在正在創建的其他問題!

6

在web.config文件中,在標籤內,插入的httpRuntime元件與屬性requestValidationMode = 「2.0」

例子:

<configuration> 
<system.web> 
<httpRuntime requestValidationMode="2.0" /> 
</system.web> 
</configuration> 
0

這爲我工作。我能夠在web.config文件中添加刪除錯誤:

<httpRuntime requestValidationMode="2.0" /> 

整個代碼:

<httpRuntime requestValidationMode="2.0" maxRequestLength="102400" /> 
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"> 

我希望這有助於。

相關問題