Почему не удается удалить заголовок ответа "Сервер" через web.config в IIS7?

Удалить заголовок сервера IIS7

Я знаю, как удалить заголовок ответа Server с помощью HTTP-модуля, основанного на ссылке выше.

Я просто хочу знать, почему это нужно удалить так.

Ответы

Ответ 1

Комментарии в ссылка Aristos дают хороший ответ на вопрос почему.

Это сводится к MS, не желающему легко позволить людям изменять это значение. Ли для маркетинга или других целей открыто для интерпретации.

Одна вещь, чтобы отвлечься от этой дискуссии, заключается в том, что изменение заголовка сервера не полезно для какой-либо безопасности. Существует множество способов, с помощью которых можно точно определить, какой тип (и версия) веб-серверного программного обеспечения запущен.

Это оставляет нам только одну причину: сохранить байты. Если вы не используете чрезвычайно высокий сайт трафика, это не вызывает беспокойства. Если вы используете сайт с высоким трафиком, вы, скорее всего, уже используете один или несколько настраиваемых модулей.

Ответ 2

В этом примере не удаляется заголовок сервера, просто напишите на нем что-то еще.

Лучшим заголовком является IIS7, как отправить пользовательский http-заголовок сервера. Прочтите эту статью http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx

Теперь, если вам интересно, почему так, это не единственный способ, вы можете перейти на свой веб-сервер и просто удалить его из заголовков инициалов.

Если вам интересно, зачем использовать IHttpModule + PreSendRequestHeader, потому что так вы захватываете заголовки на начальной части и сначала помещаете заголовок сервера, прежде чем iis сделает это.

Надеюсь на эту помощь.

Ответ 3

Вы также можете удалить это значение, добавив outboundRule в файл web.config в IIS 7 +:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules rewriteBeforeCache="true">
                <rule name="Remove Server header">
                    <match serverVariable="RESPONSE_Server" pattern=".+" />
                    <action type="Rewrite" value="" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

Ответ 4

Основная идея удаления этого заголовка выглядит следующим образом

  • По соображениям безопасности. это не будет легко определить злоумышленник о программном обеспечении (версии) и веб-сервере поддерживает сайт.
  • Он уменьшает размер данных, создаваемых сервером до браузера.

Подробнее о проверке заголовков Http

Ответ 5

Следующая вещь работает для меня:

В IIS 10.0 (Windows Server 2016/2019) вы можете удалить заголовок сервера, настроив requestFiltering в вашем узле web.config system.webServer:

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

Таким образом, вам не нужно возиться со сложными исходящими правилами перезаписи.

Чтобы удалить заголовок ASP.NETs X-Powered-By, вам все еще нужен раздел customHeaders, как упоминалось выше.

источник: https://www.saotn.org/remove-iis-server-version-http-response-header/

Ответ 6

Response.Headers.Set("Server", "My Awesome Server"); отлично работает в коде страницы, пока ваш пул приложений настроен на "Integrated Pipeline Mode".

В принципе, IPM специально предназначен для того, чтобы конвейер IIS был интегрирован с конвейером ASP.NET, чтобы это можно было сделать. См. Ответ Mehrdad Afshari для обсуждения.