web.config 位置的 IIS 动态 IP 限制

IIS Dynamic IP restrictions in web.config location

我正在尝试使用 IIS Dynamic IP Restrictions 来限制来自同一 IP 的请求。我有模块 运行,如果我从 IIS UI 编辑动态限制设置,请求会得到很好的限制。这很好,但是我需要对不同的 URL 设置不同的费率。例如,登录应该比静态资源更严格。我正在尝试在 web.config 中使用 locations 来实现这一点。

<configuration>
  <location path="foo">
  <system.webServer>   
    <security>     
      <dynamicIpSecurity enableLoggingOnlyMode="true">       
         <denyByRequestRate enabled="true" maxRequests="1" 
            requestIntervalInMilliseconds="5000" />
      </dynamicIpSecurity>
   </security>  
  </system.webServer> 
  </location>
</configuration>

很遗憾,这不适用。我很确定它与我的应用程序无关,因为它在具有一个 HTML 文件的静态网络上也不起作用。我也很确定位置路径是正确的,因为如果我添加 ...<deny users="*" />.

请求会被阻止

这是不可能的。来自模块描述:

This module can be configured such that the analysis and blocking could be done at the Web Server or the Web Site level.

在内部,这是作为 HttpModule(即本机 HttpModule)实现的。 HttpModule 为每个请求运行 - 位置不会影响它们。供参考查看

因此,您唯一的其他选择(如果您需要支持这个确切的模块)是将您的网站组织成几个迷你应用程序。

喜欢

/ -> 根 Web 应用程序

/Content -> 具有静态内容的 Web 应用程序

/登录 -> 具有登录功能的 Web 应用程序

并在每个迷你应用程序中创建 web.config 使用适当的规则。