【问题标题】:Server version disclosed in case of HTTP 500 coming because of blocked VERB hit由于阻塞 VERB 命中而出现 HTTP 500 时披露的服务器版本
【发布时间】:2019-11-06 13:22:43
【问题描述】:

我已经放置了自定义错误页面并放置了动词阻塞,只允许 GET 和 POST。 但是当我尝试其他方法(DELETE、OPTION、TRACE)时,它并没有重定向到自定义错误页面,它也是公开服务器版本。 HTTP 200 中未公开服务器版本。

错误页面处理 -:

<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="Redirect" >
      <remove statusCode="500" subStatusCode="-1" />
      <error statusCode="404" path="SSPERR.aspx" responseMode="Redirect"/>
      <error statusCode="500"  path="SSPERR.aspx" responseMode="Redirect"/>
</httpErrors>

规则

<httpErrors errorMode="Custom" existingResponse="Auto"  defaultResponseMode="Redirect" >
          <remove statusCode="500" subStatusCode="-1" />
          <error statusCode="404" path="SSPERR.aspx" responseMode="Redirect"/>
          <error statusCode="500"  path="SSPERR.aspx" responseMode="Redirect"/>
        </httpErrors>
        <security>
          <requestFiltering>
            <verbs allowUnlisted="false">
              <clear/>
              <add verb="GET" allowed="true"/>
              <add verb="POST" allowed="true"/>
            </verbs>
          </requestFiltering>
        </security>
        <rewrite>
          <outboundRules rewriteBeforeCache="true">
            <rule name="Remove RESPONSE_Server" >
              <match serverVariable="RESPONSE_Server" pattern=".+"/>
              <action type="Rewrite" value="" />
            </rule>
          </outboundRules>
        </rewrite>
        <httpProtocol>
          <customHeaders>
            <remove name="X-Powered-By" />
          </customHeaders>
        </httpProtocol>
        <modules runAllManagedModulesForAllRequests="true" />

Global.asax 文件 -:

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

【问题讨论】:

    标签: c# security iis web-config


    【解决方案1】:

    好的。我发现了问题:

    忘记删除错误 404,但再次添加并重复。由于这个原因,应用程序在异常中抛出异常,并且标头无法正确删除。 现在您可以看到一切正常。我为错误页面提供使用纯 html 文件。所以error.html会更好。

        <httpErrors errorMode="Custom" existingResponse="Auto"  defaultResponseMode="File" >
          <remove statusCode="500" subStatusCode="-1" />
          <remove statusCode="404" subStatusCode="-1" />
          <error statusCode="404" path="~/error.html" responseMode="File"/>
          <error statusCode="500"  path="~/error.html" responseMode="File"/>
        </httpErrors>
    

    【讨论】:

    • 这也是在 web.config 中添加的。仍然显示服务器版本。
    • 我修好了。请现在再次检查。
    • 服务器版本现在未公开。但是现在它抛出 404 错误,但没有重定向到错误页面。
    • 设置 responseMode = "Redirect"
    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多