Отключение заголовков ответа сервера IIS в случае файлов 404 и 302 - PullRequest
0 голосов
/ 11 октября 2018

Я использую следующие пользовательские заголовки и правила перезаписи для удаления заголовков ответов сервера IIS 8.5, но когда открываю сетевой монитор в Firefox или Chrome и указываю на любой файл со статусом 404 (а также отсутствующие изображения) или 302 (а также отсутствующий каталог или запрошенный файл в перенаправлении aspxerrorpath) позволяет мне видеть исходные заголовки.

Например, веб-сайт Microsoft скрывает эту информацию и заголовки, но посещает URL-адрес как этот позволит мне легко определить версию сервера и IIS:

Сервер Microsoft-IIS / 10.0

X-AspNet-Version 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 без необходимости делать это из моего кода C # ASP.NET?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Решением для этого является добавление правила перезаписи URL-адреса не на уровне сайта в IIS Manager, а на уровне сервера.Вы также можете напрямую отредактировать файл applicationHost.config, расположенный по адресу C: \ Windows \ System32 \ inetsrv \ config \ на вашем веб-сервере.Любой из этих методов будет каскадно применять это правило к каждому сайту в IIS.Перед этим обязательно удалите это правило перезаписи, которое вы, возможно, уже добавили для любых дочерних сайтов, иначе оно дублирует правило при добавлении на уровне сервера и вызовет ошибку.Я подтвердил эту работу в IIS 8.5.

0 голосов
/ 29 ноября 2018

Я не считаю это хорошим ответом, но это потенциальный обходной путь в зависимости от конфигурации вашего сайта.Эксперименты с IIS 8.5 показывают, что правила перезаписи исходящих сообщений в достаточной степени игнорируются обработчиком ошибок кода состояния (т. Е. Ответом страниц ошибок) или перенаправлением 302 в ответ на состояние ошибки, что заголовок сервера оставлен по умолчанию.Однако, если вы перенаправите на URL-адрес, который является частью сайта, вы получите правило перезаписи исходящего трафика.

Итак, что-то подобное в файле web.config будет перенаправлять в корень сайта.и исходящее правило сработает.

Если вы можете обслуживать статический контент, вы можете добавить файл (скажем, /errors/404.htm), а затем соответствующим образом изменить путь.Когда вы получите ошибку 404, файл 404.htm будет возвращен и правило исходящего будет сработано.Тем не менее, имейте в виду, что каждая ошибка будет иметь эту проблему, так что это исправит 404, но другие ошибки должны быть обработаны аналогичным образом.

...