Asp.net
ASP.NET MVC3 - 你如何處理探測請求?
我們的網站上線了,當然,我們開始收到大量的探測請求,比如
‘/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>