Iis
IIS 停止偽造 API
在 IIS 中它可以阻止虛假的 API 呼叫嗎?昨天,我被試圖查看網站上是否存在頁面的東西淹沒了。他們得到了 404,但應用程序仍然需要檢查這是否是應用程序中的一個好頁面。IIS 是否可以停止此操作,或者 Web 應用程序是否需要對其進行處理並停止它。IIS 中是否有一個部分可以添加虛假路徑來阻止這種情況?這會幫助https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/denyurlsequences/或使用 IIS 重寫的反向代理它只會傳遞設置的流量嗎?
虛假的 API 呼叫
The controller for path '/bitrix/admin/' was not found The controller for path '/cgi-bin/webcm' The controller for path '/admin' was not found The controller for path '/system/login' The controller for path '/typo3/phpmyadmin/'
應用程序日誌文件
2021-08-17 15:05:28,382 [16] ERROR HTI.LogServices.Implementation.Log4NetHelper - [undefined]: Unhandled Exception (System.Web.HttpException (0x80004005): The controller for path '/admin' was not found or does not implement IController. at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
正如您已經提到的,IIS 的請求過濾應該能夠為您提供幫助。
您正在使用 asp.net MVC 站點,因此會根據所有已配置的路由檢查任何請求的 URL。這意味著您的應用程序層用於以 404 響應請求。
理想情況下,您希望在呼叫應用程序層之前在請求管道中更早地使用 404。
有幾種選擇:
<system.webServer> <security> <requestFiltering> <denyUrlSequences> <add sequence="/system/login" /> </denyUrlSequences> <hiddenSegments> <add segment="system" /> </hiddenSegments> <filteringRules> <filteringRule name="systemLogin" scanUrl="true" scanQueryString="false"> <denyStrings> <add string="system/login" /> </denyStrings> </filteringRule> </filteringRules> </requestFiltering> </security> </system.webServer>
您應該只考慮哪一個最適合您並且不會影響您自己的應用程序。
如果您啟用失敗的請求跟踪,您可以看到 404 響應是在管道中的哪個位置創建的。在我沒有使用請求過濾的測試中,404 是在管道中的位置 232 創建的,使用請求過濾它是在位置 72 創建的,它是在呼叫應用程序層之前創建的。
是的,在您的 IIS 伺服器前面的 Web 防火牆會更好,但缺少 IIS 可以在這些請求到達您的應用程序之前檢測到這些請求。
確保您的自定義錯誤頁面配置正確,除了 404 之外不要說其他任何內容。