Asp.net

ASP.NET MVC3 - 你如何處理探測請求?

  • November 15, 2011

我們的網站上線了,當然,我們開始收到大量的探測請求,比如

‘/blog/wp-login.php’

‘/admin/admin.php’

等等。

所以問題是,你用它們做什麼?

現在在每種情況下都會拋出 404 錯誤,並且 elmah 會發送有關它的電子郵件,但我認為至少忽略所有 php 請求會更好。

如何做到這一點,這樣的請求將最小地載入伺服器,也許可以做到,這樣的請求不會涉及 asp.net 管道?

還是重定向或返回空結果更好?

如果這需要簡單地添加 IgnoreRoutes,可能有人有很好的路由集,會忽略大多數探測請求?

我知道您已經聲明您不想在 IIS 中使用重寫模組,因為它“增加了 IIS 上的額外負載”,但實際上,使用 IIS 處理這些將比傳遞到您的應用程序執行同樣的事情(即使兩者在資源方面都非常小)。如果您想以最小的 IIS 負載和頻寬忽略請求,我建議您執行以下操作

<rewrite>
 <rules>
   <rule name="Fail PHP requests">
     <match url=".*"/>
     <conditions>
       <add input="{URL}" pattern="*.php*" />
     </conditions>
     <action type="AbortRequest" />
   </rule>
  </rules>
</rewrite>

將操作類型設置為 AbortRequest 的這種重寫完全切斷了 HTTP 連接並丟棄了請求,沒有返回 404 或 403 錯誤。取自“創建訪問塊”部分的Learn IIS 。

編輯- 由於 OP 對使用 rewrite 模組和性能存在擔憂,我將送出第二個選項,它可能仍會在不使用 rewrite 模組的情況下擷取 .php 請求。IIS7 及更高版本也支持請求過濾,根據學習 IIS,請求過濾是…

請求過濾模組通過處理 BeginRequest 事件在請求處理管道的開頭執行。該模組評估請求元數據,例如標頭、查詢字元串、內容長度等,以確定請求元數據是否與任何現有過濾器匹配。如果匹配,模組會生成 404(未找到文件)響應,然後使用 IIS 管道的其餘部分的快捷方式

要實施,請將以下部分添加到您的 web.config:

<configuration>
<system.webServer>
 <security>
  <requestFiltering>
   <fileExtensions allowUnlisted="true" >
    <add fileExtension=".php" allowed="false"/>
   </fileExtensions>
  </requestFiltering>
 </security>
</system.webServer>
</configuration>

來自URL 重寫與請求過濾使用請求過濾的資訊

引用自:https://stackoverflow.com/questions/8118703