Почему не удается удалить заголовок ответа "Сервер" через 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 для обсуждения.