我想在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 } } }
请确保此模块在请求过滤模块之后运行。
这保证了请求过滤模块在任何可能的.NET代码之前运行。 希望在这种情况下,即使请求有一个无效的Request.Path值,在出现任何可见的错误之前,它都应该被请求过滤模块拾取。