2010-09-09 9 views
14

Remove Server Response Header IIS7Почему не удается удалить Заголовок ответа сервера с помощью web.config в IIS7?

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

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

+1

так, ну, почему вниз голосования? –

ответ

5

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

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

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

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

+0

Несмотря на то, что удаление почти наверняка попадает в класс «Театр безопасности», а не «Фактическая безопасность», для тестирования проникновения очень обычно требуется, чтобы этот внешний посторонний заголовок отображал конфигурацию системы, которую нужно удалить. –

+3

Я разрабатываю мобильные сайты, я согласен с аргументом безопасности, это действительно не безопасность, но утверждают, что удаление его для экономии пространства имеет значение для клиентов, чья пропускная способность съедена ненужными данными. Позвольте быть хорошими гражданами сетевого мира и уважать наших пользователей и инфраструктуру, от которой мы зависим. –

+0

@NormanH: Думаю, вы хорошо поняли. – NotMe

2

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

Лучшее название: «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 сделает это.

Надеюсь, что эта помощь.

+0

Ну, нет. «Как отправить пользовательский« HTTP-заголовок сервера »- это не то, что я ищу ... Я уже знаю, как это сделать. Я хочу знать, почему это необходимо сделать в HttpModule для «Server», но не для других заголовков, которые могут быть добавлены/удалены с помощью web.config (''). –

+0

@ Давид, это что-то другое, о чем вы просите (и я не уверен дать ответ в этот момент), ответ на ваш главный вопрос - это то, что я пишу. – Aristos

+0

в вопросе, который я задал: «Я просто хочу знать, почему нужно удалить [заголовок сервера] таким образом.» «Спасибо за ответ! –

-1

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

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

0

Основная идея удаления этих заголовков являются

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

Read more about Inspecting Http Response Headers

0

Вы также можете очистить значение путем добавления 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^