在ASP.NET中删除HTTP响应头的最佳方法,因为它会泄露技术堆栈

inn6fuwd  于 2022-11-19  发布在  .NET
关注(0)|答案(2)|浏览(121)

我需要从我的ASP.NET MVC 3 Web应用程序中删除以下标头。

Server
X-AspNet-Version
X-AspNetMvc-Version
X-AspNetWebPages-Version
X-Powered-By

我找到了两个有效的选项。选项1更干净,实际上删除了服务器头,但我试图找出是否有任何副作用,我应该担心。这两个选项是否都比另一个好?每种方法的优缺点是什么?

选项1

应用程序启动()

PreSendRequestHeaders += Application_PreSendRequestHeaders;

Global.asax.cs

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    HttpContext.Current.Response.Headers.Remove("Server");
    HttpContext.Current.Response.Headers.Remove("X-AspNetWebPages-Version");
    HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
    HttpContext.Current.Response.Headers.Remove("X-Powered-By");
    HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
}

选项2

<system.web>节点内部(删除了X-AspNet-Version)

<httpRuntime enableVersionHeader="false" />

Web.config〉〉在<system.webServer>节点内部(删除了X-Powered-By)

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
  </customHeaders>
</httpProtocol>

<system.webServer>节点内(更改服务器的值,需要URL重写)

<rewrite>
  <outboundRules rewriteBeforeCache="true">
    <rule name="Remove Server header">
      <match serverVariable="RESPONSE_Server" pattern=".+" />
      <action type="Rewrite" value="" />
    </rule>
  </outboundRules>
</rewrite>

应用程序启动()(删除X-AspNetMvc版本和X-AspNetWebPages版本)

MvcHandler.DisableMvcResponseHeader = true;
WebPageHttpHandler.DisableWebPagesResponseHeader = true;
goucqfw6

goucqfw61#

在我看来,第二个版本是好的。
根据你的描述和代码,我已经创建了一个测试演示,在发布项目到IIS 10,我发现响应头没有删除。你可以发现x-Powered-by仍然存在。

此外,根据HttpApplication.PreSendRequestHeaders Event API,您可以找到以下备注:
不要将PreSendRequestHeaders与实现IHttpModule的托管模块一起使用。设置这些属性可能会导致异步请求出现问题。应用程序请求的路由(ARR)和Web套接字的组合可能会导致访问冲突异常,从而导致w3 wp崩溃。例如,iiscore.dll中的iiscore!W3_CONTEXT_BASE::GetIsLastNotification+68导致访问冲突异常(0xC 0000005)。

zfciruhq

zfciruhq2#

对于X-AspNetWebPages-Version,现在将属性enableVersionHeader=“false”(见下文)添加到web.config〉httpRuntime
<httpRuntime targetFramework="4.7.2" maxRequestLength="1048576" enableVersionHeader="false" />

相关问题