Я пытаюсь удалить заголовок сервера, который раскрывает версию IIS, но не смог. Я использую IIS Express 10 с ASP.NET Core 3.0 и разработал веб-API. Я пробовал варианты ниже, но заголовок все еще присутствует в ответе и показывает версию IIS 10.0.
Изменен раздел реестра "DisableServerHeader" в параметрах HTTP на 1. Он удалил только заголовок сервера модуля http.sys, а не версию IIS.
Используемый ниже код в файле applicationhost.config внутри <system.webServer>
тег
<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
Я тестировал трюк на этом сайте, и он хорошо работает на IIS 10.
просто web.config
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader ="true" />
</security>
</system.webServer>
</configuration>
Я вспомнил, что видел, что это возможно в IIS10, и действительно писал об этом в блоге. Новые функции в IIS 10.
Есть новый removeServerHeader
параметр, но он недоступен в графическом интерфейсе, вам нужно использовать редактор конфигурации или использовать PowerShell:
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "True"
для всего сервера, если он вам нужен только для сайта, используйте:
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site' -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "True"
Мне кажется, это нормально работает, перезагрузка или перезапуск IIS не требуется.
Это не влияет на http.sys
заголовок сервера в том редком случае, когда он отвечает на запрос.
Запустить от имени администратора:
%systemroot%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/requestFiltering /removeServerHeader:"True" /commit:apphost