如何让IIS 7在请求validation之前执行“请求筛选”

我想在IIS 7.5中使用请求过滤function来过滤一些恶意请求,我们从一些机器人获得。 请求触发“System.Web.HttpException:从客户端检测到潜在危险的Request.Path值”,我不想在我们的应用程序configuration情况下。 但是,在请求过滤function中添加拒绝这些请求的规则不会执行任何操作,因为显然请求validation首先发生。 任何想法如何在validation之前使用IIS筛选这些不良请求?

根据我的经验和使用失败的请求追踪,一旦.NET代码运行,对Request.Path的validation错误就会发生。 请求跟踪模块在开始请求stream水线上运行。

如果您有一个在开始请求事件期间执行的受pipe.NET模块(下面的示例)。

using System; using System.Web; namespace Test { public sealed class CustomModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += context_BeginRequest; } void context_BeginRequest(object sender, EventArgs e) { // Main .NET Code Here } } } 

请确保此模块请求过滤模块之后运行。

  • 使用IISpipe理器,单击模块。
  • 点击查看有序列表
  • 确保任何托pipe的.NET模块放在RequestFilteringModule之后。

这保证了请求过滤模块在任何可能的.NET代码之前运行。 希望在这种情况下,即使请求有一个无效的Request.Path值,在出现任何可见的错误之前,它都应该被请求过滤模块拾取。