Как удалить пользовательские заголовки IIS, такие как X-Powered-By: ASP.NET, из ответа? - PullRequest
35 голосов
/ 02 ноября 2010

В IIS 7.0 integrated mode после удаления всех заголовков с помощью Response.ClearHeaders() IIS добавит некоторые другие заголовки, такие как Server и X-Powered-By, которые предоставляют хакерам полезную информацию Как я могу остановить это поведение (учитывая, что мне все еще нужно добавлять свои пользовательские заголовки)?

Ответы [ 7 ]

67 голосов
/ 06 декабря 2011

Вы можете добавить это в свой Web.Config:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-Powered-By" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

Обновление: если вы используете инфраструктуру MVC, я бы также порекомендовал удалить заголовки X-AspNetMvc-Version и X-AspNet-Version. Это достигается установкой MvcHandler.DisableMvcResponseHeader = true в вашем файле Global.asax и <system.web><httpRuntime enableVersionHeader="false" /></system.web> в вашем Web.config соответственно.

13 голосов
/ 02 ноября 2010

X-Powered-By настроен в IIS. В Windows 7 это конкретно:

  1. IIS Manager
  2. ИМЯ КОМПЬЮТЕРА> Сайты> Веб-сайт по умолчанию
  3. HTTP отвечает заголовки
  4. Удалить X-Powered-By

Я не уверен, что генерирует заголовок Server.

5 голосов
/ 08 августа 2012

Для интегрированного режима IIS7 + у eth0 есть это: тег <customHeaders> в web.config.Спасибо за это.Что касается заголовка «Server», при использовании MVC вы можете просто добавить:

    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
    }

в ваш класс MvcApplication в Global.asax.В противном случае вы можете просто добавить пользовательский модуль Http, обрабатывая событие PreSendRequestHeaders, и сделать то же самое.

2 голосов
/ 09 октября 2012

Следующий ответ включает в себя полное решение, которое не требует URLScan или пользовательского HttpModule, и удаляет все связанные заголовки, которые вы упоминаете. Это также работает на Azure.

Удаление / скрытие / отключение чрезмерных заголовков HTTP-ответов в Azure / IIS7 без UrlScan

1 голос
/ 20 ноября 2010

URLScan можно использовать для удаления заголовка сервера или настройки другого заголовка сервера, http://learn.iis.net/page.aspx/938/urlscan-3-reference/

Но это никогда не мешает хакеру узнать, что вы на самом деле используете. Существуют и другие способы обнаружения информации о вашем сервере.

0 голосов
/ 13 июня 2019

Хотелось бы добавить, что для версий ASP.NET Core, в которых больше нет файла web.config, необходим другой подход.

Я внес следующие изменения, чтобы удалить заголовки в ASP.NET Core 2.1:

Вы можете удалить заголовок x-powered-by, заменив

<customHeaders>
        <clear />
        <add name="X-Powered-By" value="ASP.NET" />
</customHeaders>

с

<customHeaders>
        <remove name="X-Powered-By" />
</customHeaders>

в файле applicationhost.config, который находится в папке .vs \ config проекта.

Заголовок сервера можно удалить, добавив

.UseKestrel(c => c.AddServerHeader = false)

в файле Program.cs.

0 голосов
/ 24 апреля 2018

Вы можете использовать appcmd.exe (IIS 7 и выше) для выполнения своей работы.Сценарий будет выглядеть следующим образом:

C:\Windows\System32\inetsrv\appcmd.exe set config -section:system.webserver/httpProtocol /-customHeaders.["name='X-Powered-By'"] /commit:apphost  

/commit:apphost: он фиксирует параметры конфигурации в соответствующем разделе местоположения в файле ApplicationHost.config.

Обычно я создаю командный файл всех этих сценариев, которые запускаю на веб-сервере после установки приложения.

Для приложений ASP.NET MVC подход отличается, и вы можете обратитьсядругие ответы даны здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...