Версия сервера раскрывается в случае прихода HTTP 500 из-за заблокированного попадания VERB - PullRequest
0 голосов
/ 06 ноября 2019

Я поставил пользовательскую страницу ошибки и поставил блокировку глагола, разрешив только 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");
}

enter image description here

1 Ответ

1 голос
/ 06 ноября 2019

Хорошо. Я обнаружил проблему:

Вы забыли удалить ошибку 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...