.net mvc主机标头注入-http模块-400错误请求

.net mvc主机标头注入-http模块-400错误请求,.net,asp.net-mvc,httpmodule,header-injection,.net,Asp.net Mvc,Httpmodule,Header Injection,我的任务是减轻MVC应用程序中主机头的注入。除此之外,我希望通过创建HTTP模块来实现白名单检查 到目前为止,我使用的是如下内容: web.config条目: <system.webServer> <modules> <add name="TestHttpModule" type="MVC5TestApp.MyHttpModule, MVC5TestApp" /> </modules> </system.w

我的任务是减轻MVC应用程序中主机头的注入。除此之外,我希望通过创建HTTP模块来实现白名单检查

到目前为止,我使用的是如下内容:

web.config条目:

  <system.webServer>
    <modules>
      <add name="TestHttpModule" type="MVC5TestApp.MyHttpModule, MVC5TestApp" />
    </modules>
  </system.webServer>


对于MVC,更干净的解决方案是实现一个
IActionFilter
来执行验证。在
OnActionExecuting
中,您可以执行头检查,并强制那里的响应(HTTP 400)短路请求流的其余部分

您的
OnActionExecuting
实现如下所示

if(!ValidateWhiteListedHeaders(context.HttpContext.Request.Headers)){
  context.Result = new StatusCodeResult(400);
  return;
}

有关MVC,请参见

,更干净的解决方案是实施一个
IActionFilter
来执行验证。在
OnActionExecuting
中,您可以执行头检查,并强制那里的响应(HTTP 400)短路请求流的其余部分

您的
OnActionExecuting
实现如下所示

if(!ValidateWhiteListedHeaders(context.HttpContext.Request.Headers)){
  context.Result = new StatusCodeResult(400);
  return;
}

参见

我也考虑过这种方法,并将继续跟进。您知道强制使用HTTP 400的最佳方法吗?我也考虑过这种方法,并将继续跟进。您知道强制HTTP 400的最佳方法吗?