Удалить заголовок сервера IIS 8.0/8.5

Как мы можем удалить ответ заголовка сервера в IIS 8.0/8.5?
Мой текущий отчет сервера: Microsoft-IIS/8.0 Microsoft-IIS/8.5
Для IIS 7.0 я использовал URLScan 3.1, однако это поддерживается только для IIS 7.0, а не 8.x

Ответ 1

Есть другое решение, и, на мой взгляд, это лучшее и безопасное решение.

Вы можете использовать модуль UrlRewrite, созданный Microsoft. Модуль Url Rewrite перенаправляет ваш URL, а также может изменить имя сервера IIS в заголовке ответа.

Вам не нужно использовать свойство перенаправления. Вы можете использовать просто изменить значение заголовка сервера.

Вот шаги:

  1. Сначала загрузите модуль UrlRewrite по этой ссылке: http://www.iis.net/downloads/microsoft/url-rewrite и установите его на свой сервер IIS. После этого перезапустите IIS этой командой на консоли cmd.

    iisreset /restart
    
  2. Добавьте следующий элемент в файл веб-конфигурации под <system.WebServer>. Вы можете записать что угодно в элемент Value в качестве имени сервера.

    enter image description here

  3. Наконец, мы изменили имя версии IIS в заголовке данных. Перезапустите IIS снова. через консоль cmd.

  4. Бонус: если вы хотите протестировать ваш сайт, чтобы увидеть, работает ли он или нет... Вы можете использовать плагин "HttpRequester" mozilla firefox. для этого плагина: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

PS: я проверил это, и это работало для меня на сервере IIS. Не на сервере был создан temproray IIS Visual Studio.

Ответ 2

К сожалению, большинство рекомендаций, которые вы найдете в Интернете для удаления заголовка "Сервер" в IIS, не будут работать для IIS 8.0 и 8.5. Я нашел единственный рабочий вариант, и, на мой взгляд, также лучше всего использовать модуль родного кода IIS.

Модули Native-Code отличаются от более распространенных управляемых модулей, поскольку они написаны с использованием API-интерфейсов win32, а не ASP.NET. Это означает, что они работают для всех запросов (включая статические страницы и изображения), а не только запросы, прошедшие через конвейер ASP.NET. Используя модуль Native-Code, можно удалить нежелательные заголовки в самом конце запроса, что означает, что вы можете удалить заголовки (включая заголовок "Сервер" ) независимо от того, где они были установлены.

Бинарники и исходный код примера. Модуль Native-Code для удаления заголовков в IIS 7.0 до 8.5 доступен в следующей статье.

http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85

Ответ 3

Просто используйте ярлык в сегменте пользовательских заголовков в web.config:

<system.webServer>
   <httpProtocol>
      <customHeaders>
           <clear />
            <add name="X-Custom-Name1" value="MyCustomValue1" />
            <add name="X-Custom-Name2" value="MyCustomValue2" />
      </customHeaders>
   </httpProtocol>
</system.webServer>

Для динамических заголовков этот код можно использовать в Global.ascx:

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

Ответ 4

Это мертво просто. Просто создайте настраиваемый модуль:

public class HeaderStripModule : IHttpModule
{
    public void Init(HttpApplication application)
    {
        application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
    }

    public void Dispose(){}
}

И затем зарегистрируйтесь в web.config или applicationHost.config, если вы хотите реализовать машину в целом.

<system.webServer>
  <modules>
      <add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
  </modules>
</system.webServer>

Ответ 5

URLScan был прекращен начиная с IIS 7.5, так как его функции должны быть доступны через опцию "фильтрация запроса" (функция добавлена ​​в IIS 7.5).

Но параметр URLScan "Удалить серверный заголовок" не похож на эквивалент "фильтрации запросов".

Как сказано в этом ответе и этот ответ на ваш вопрос, вы можете очистить Server с URLRewrite вместо этого, который остается доступным в IIS 8/8.5 (с некоторым обновлением, необходимым для его интерфейса в консоли администрирования IIS).

Оказывается, глядя на этот блог, что URLScan все еще можно установить на IIS 8/8.5, если отсутствие официальной поддержки не проблема.

Я не тестировал себя. Вот шаги:

  • Установите совместимость IIS 6 Metabase (если она еще не существует)
  • Установите фильтры Isapi (если они еще не существуют)
  • Установить URLScan (из загрузочного установщика, а не из установщика веб-платформы).
  • Настройте URLScan через его ini файл (по умолчанию в C:\Windows\System32\inetsrv\urlscan)

Может быть, некоторые iisreset или даже перезагрузка должны быть выполнены. URLScan должен быть видимым в IIS среди фильтров Isapi.

Ответ 6

Проблема заключается в том, что вы нажимаете

Неверный запрос - неверный URL-адрес HTTP-ошибка 400. Недопустимый URL-адрес запроса.

Запрос не попадает в модуль перезаписи URL. В моем случае для IIS 8.5 мне пришлось сделать следующее:

  • Перейти к: HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

  • Добавить: DWORD DisableServerHeader value = 1

  • open powershell

    net stop http
    net start http
    
  • Перейдите в диспетчер IIS, перезагрузите свои веб-сайты и вуаля!

Ответ 7

Для решения вышеуказанной проблемы добавьте приведенный ниже код в Global.asax.cs

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

После большого количества просмотров проблема была решена.

Ответ 8

Теперь возможно удалить заголовок Server из web.config начиная с IIS 10.0:

<security>
  <requestFiltering removeServerHeader ="true" />
</security>

Подробнее о том, как удалить все ненужные/ненужные заголовки, можно найти здесь.

Обратите внимание, что это скрывает заголовок сервера от "приложения", как и все другие подходы. Если вы, например, достигли какой-либо страницы по умолчанию или страницы ошибки, созданной самим IIS или ASP.NET вне вашего приложения, эти правила не будут применяться. Поэтому в идеале они должны находиться на корневом уровне в IIS, и этот порог может оставить некоторые сообщения об ошибках для самого IIS.

В IIS 10 есть ошибка, из- за которой он иногда показывает заголовок даже с помощью config. Это должно быть исправлено, но IIS/Windows должен быть обновлен.

Ответ 9

В диспетчере IIS на уровне сервера перейдите в представление "Возможности". Нажмите "Заголовки ответов HTTP". Вы можете добавлять/удалять заголовки. Вы также можете управлять заголовками ответов на уровне сайта.