Подтвердить что ты не робот

Как удалить пользовательские заголовки IIS, такие как X-Powered-By: ASP.NET от ответа?

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

4b9b3361

Ответ 1

Вы можете добавить это в свой 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 соответственно.

Ответ 2

X-Powered-By настроен в IIS. В Windows 7 это специально:

  • Диспетчер IIS
  • ИМЯ КОМПЬЮТЕРОВ > Сайты > Веб-сайт по умолчанию
  • Заголовки HTTP-заголовков
  • Удалить X-Powered-By

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

Ответ 3

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

Хотелось бы добавить, что для версий 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.