Security 在404和302文件的情况下禁用IIS服务器响应头

Security 在404和302文件的情况下禁用IIS服务器响应头,security,iis,http-headers,response,iis-8.5,Security,Iis,Http Headers,Response,Iis 8.5,我使用以下自定义标题和重写规则删除服务器响应标题IIS 8.5,但在Firefox或Chrome上打开网络监视器并指向任何状态为404(以及缺少的图像)或302(以及aspxerrorpath重定向中缺少的目录或请求的文件)时使我能够查看原始标题 例如,Microsoft网站正在隐藏此信息和标题,但访问将使我能够轻松确定以下服务器和IIS版本: 服务器Microsoft IIS/10.0 X-AspNet-Version4.0.30319 X-Powered-ByASP.NET <syst

我使用以下自定义标题和重写规则删除服务器响应标题IIS 8.5,但在Firefox或Chrome上打开网络监视器并指向任何状态为404(以及缺少的图像)或302(以及aspxerrorpath重定向中缺少的目录或请求的文件)时使我能够查看原始标题

例如,Microsoft网站正在隐藏此信息和标题,但访问将使我能够轻松确定以下服务器和IIS版本:

服务器Microsoft IIS/10.0

X-AspNet-Version4.0.30319

X-Powered-ByASP.NET

<system.webServer>

<httpProtocol>
    <customHeaders>
        <remove name="X-Powered-By-Plesk" />
        <add name="Server" value="CustomName" />
    </customHeaders>
</httpProtocol>

<rewrite>
  <outboundRules rewriteBeforeCache="true">
    <rule name="Remove Headers 1">
      <match serverVariable="RESPONSE_Server" pattern=".+" />
      <action type="Rewrite" value="" />
    </rule>
    <rule name="Remove Headers 2" patternSyntax="ExactMatch">
      <match serverVariable="RESPONSE_SERVER" pattern=".*" />
      <action type="Rewrite" value="" />
    </rule>
  </outboundRules>
</rewrite>  
</system.webServer>


<强>是否有必要从IIS 8.5或Web.CONFIG中修复这个问题而不必从我的ASP.NET C代码中执行?< /强>

< P>我不认为这是一个很好的答案,但这取决于您的站点配置。对IIS 8.5的实验表明,在状态代码错误处理程序(即错误页面响应)或302重定向上,出站重写规则被充分忽略,以响应服务器头保留为默认的错误状态。但是,如果重定向到作为站点一部分的URL,则会触发出站重写规则

因此,web.config中的类似内容将重定向到站点的根目录,并触发出站规则








如果可以提供静态内容,可以添加一个文件(比如/errors/404.htm),然后相应地更改路径。当您收到404错误时,将返回404.htm文件,并触发出站规则。但是,请注意,每个错误状态都会有此问题,因此这将修复404,但必须以类似方式处理其他错误。

解决方案是添加URL重写规则,而不是在IIS管理器中的站点级别,而是在服务器级别。您还可以直接编辑web服务器上位于C:\Windows\System32\inetsrv\config\的applicationHost.config文件。这两种方法中的任何一种都会将此规则级联到IIS中的每个站点。在执行此操作之前,请确保删除您可能已为任何子站点添加的此重写规则,否则在服务器级别添加时将复制此规则并导致错误。我已经在IIS 8.5中确认了这一点。

我能够通过在web.config中的标记中添加“runAllManagedModulesForAllRequests=“true”来删除默认404错误页上的“Server:Microsoft IIS/8.5”响应头。我必须为服务器上的每个站点都这样做。仅供参考,此解决方案未修复默认的400个“错误请求”错误页面

进行此更改后,我没有测试性能。其他人则表示,添加“runAllManagedModulesForAllRequests=”true“可能会导致性能下降

此解决方案取自Rick Strahl的网站:

下面是将其放在web.config文件中的位置

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" >
    ...
  </modules>  
</system.webServer> 

...

中的DisableServerHeader
应该会有所帮助。请求文件环中还有另一个设置,
X-
头应该手动从
applicationHost.config
中删除。这不适用于我,错误为404。在其他情况下工作,但当我放置一个不存在的url时,它会显示服务器。或者是否需要另外设置其他设置?