Iis

IIS 停止偽造 API

  • August 22, 2021

在 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 之外不要說其他任何內容。

引用自:https://serverfault.com/questions/1075084