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

时间:2018-10-11 18:44:16

标签: security iis http-headers response iis-8.5

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

例如,Microsoft网站隐藏了此信息和标头,但是访问URL like this将使我轻松确定服务器和IIS版本:

服务器 Microsoft-IIS / 10.0

X-AspNet版本 4.0.30319

X-Powered-By ASP.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#代码中修复此问题?

3 个答案:

答案 0 :(得分:0)

我认为这不是一个很好的答案,但这是一个潜在的解决方法,具体取决于您的站点配置。在IIS 8.5上进行的实验表明,出站重写规则在状态代码错误处理程序(即错误页面响应)或302重定向中已被充分忽略,以响应将服务器标头保留为默认状态的错误状态。但是,如果您重定向到站点的URL,则将触发“出站重写”规则。

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


    
        <删除statusCode =“ 404” subStatusCode =“-1” />
        <错误statusCode =“ 404” path =“ /” responseMode =“ ExecuteURL” />
    


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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

通过将“ runAllManagedModulesForAllRequests =“ true”“添加到web.config中的标记,我能够删除默认404错误页面上的“服务器:Microsoft-IIS / 8.5”响应标头。我必须对服务器上的每个站点执行此操作。没错,此解决方案无法修复默认的400个“错误请求”错误页面。

进行此更改后,我尚未测试性能。其他人说添加“ runAllManagedModulesForAllRequests =” true“”可能会导致性能下降。

此解决方案来自Rick Strahl的网站:https://weblog.west-wind.com/posts/2012/oct/25/caveats-with-the-runallmanagedmodulesforallrequests-in-iis-78

在此处将其放入您的web.config文件中。

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