IIS 8按JSON有效负载字段阻止请求

IIS 8按JSON有效负载字段阻止请求,json,asp.net-mvc,iis,payload,Json,Asp.net Mvc,Iis,Payload,我有一个MVC.NET 4 web服务器,它接受HTTP POST请求,并将JSON格式的字符串作为请求数据。 我想在请求到达服务器之前在IIS级别添加一条规则,以阻止某个正则表达式对该JSON字符串的请求。有可能吗?既然你说: 我希望它处于IIS级别,以避免更多的web负载 服务器级需要为每个请求创建另一个线程。这个 我想阻止某些请求的原因是它们与 我的应用程序的负载很高,我无法阻止他们从 客户端 您有两种选择: 请求过滤 URL重写 请仔细阅读这篇文章,了解他们最重要的事情。如果您的选择是第

我有一个MVC.NET 4 web服务器,它接受HTTP POST请求,并将JSON格式的字符串作为请求数据。 我想在请求到达服务器之前在IIS级别添加一条规则,以阻止某个正则表达式对该JSON字符串的请求。有可能吗?

既然你说:

我希望它处于IIS级别,以避免更多的web负载 服务器级需要为每个请求创建另一个线程。这个 我想阻止某些请求的原因是它们与 我的应用程序的负载很高,我无法阻止他们从 客户端

您有两种选择:

  • 请求过滤
  • URL重写
  • 请仔细阅读这篇文章,了解他们最重要的事情。如果您的选择是第一个具有最高优先级的选择,则在包含一些筛选要求时,将非常有用。对于使用正则表达式,您需要使用第二个。以下示例规则可以停止处理
    下的请求:

    <rule name="Block Bad Request Strings" stopProcessing="true">
         <match url=".*" />
         <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
              <add input="{QUERY_STRING}" pattern="id=([^\"]*[^-]?>)|(?:[^\\w\\s]\\s*\\\/>)|(?:>\") />
         </conditions>
         <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission" />
    </rule>
    
    
    

    我认为创建和添加自定义可以解决您的问题。HTTP模块在每个请求上被调用,以响应
    BeginRequest
    EndRequest
    事件。

    要阻止某个正则表达式对该JSON字符串的请求,请解释您的意思…@DaveAlperovich请求具有JSON格式的字符串体。因此,如果该字符串与某个正则表达式匹配,则中止请求,就像您可以将查询url与使用OWIN的正则表达式匹配一样?或者可以使用HttpApplication.BeginRequest事件?你们能详细解释一下为什么它必须在IIS级别上吗?我并没有使用OWIN,我希望它在IIS级别上,以避免web服务器级别的更多负载,从而需要为每个请求创建另一个线程。我想阻止某些请求的原因是,它们与我的应用程序不再相关,它们的负载很高,我无法从客户端阻止它们。谢谢你的时间,如果你阻止ip不是更容易吗?谢谢-我实际上在寻找一种在IIS级别阻止它的方法,而不是在web服务器上。BeginRequest事件会这样做吗?当你说IIS级别时..你的意思是只对一个特定的网站实施阻止吗?或使用