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

Orr*_*Orr 12 iis asp.net-mvc json payload

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

Ami*_*rzi 5

既然你说:

我希望它在IIS级别,以消除需要为每个请求创建另一个线程的Web服务器级别的更多负载.我想阻止一些请求的原因是它们不再与我的应用程序相关,高负荷而且我无法阻止它们从客户端

你有2个选择:

  1. 请求过滤
  2. URL重写

请仔细研究IIS 7.0请求过滤和URL重写文章,以了解有关它们的最重要信息.如果您的选择是第一个具有最高优先级的选项,<denyQueryStringSequences>那么它将涵盖一些过滤要求.要使用正则表达式,您需要使用第二个.以下示例规则可以在以下情况下停止处理请求<rewrite>:

<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>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅URL重写模块配置参考


小智 2

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