Как мы можем удалить ответ заголовка сервера в IIS 8.0/8.5?
Мой текущий отчет сервера: Microsoft-IIS/8.0
Microsoft-IIS/8.5
Для IIS 7.0 я использовал URLScan 3.1, однако это поддерживается только для IIS 7.0, а не 8.x
Удалить заголовок сервера IIS 8.0/8.5
Ответ 1
Есть другое решение, и, на мой взгляд, это лучшее и безопасное решение.
Вы можете использовать модуль UrlRewrite, созданный Microsoft. Модуль Url Rewrite перенаправляет ваш URL, а также может изменить имя сервера IIS в заголовке ответа.
Вам не нужно использовать свойство перенаправления. Вы можете использовать просто изменить значение заголовка сервера.
Вот шаги:
-
Сначала загрузите модуль UrlRewrite по этой ссылке: http://www.iis.net/downloads/microsoft/url-rewrite и установите его на свой сервер IIS. После этого перезапустите IIS этой командой на консоли cmd.
iisreset /restart
-
Добавьте следующий элемент в файл веб-конфигурации под
<system.WebServer>
. Вы можете записать что угодно в элемент Value в качестве имени сервера. -
Наконец, мы изменили имя версии IIS в заголовке данных. Перезапустите IIS снова. через консоль cmd.
-
Бонус: если вы хотите протестировать ваш сайт, чтобы увидеть, работает ли он или нет... Вы можете использовать плагин "HttpRequester" mozilla firefox. для этого плагина: https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS: я проверил это, и это работало для меня на сервере IIS. Не на сервере был создан temproray IIS Visual Studio.
Ответ 2
К сожалению, большинство рекомендаций, которые вы найдете в Интернете для удаления заголовка "Сервер" в IIS, не будут работать для IIS 8.0 и 8.5. Я нашел единственный рабочий вариант, и, на мой взгляд, также лучше всего использовать модуль родного кода IIS.
Модули Native-Code отличаются от более распространенных управляемых модулей, поскольку они написаны с использованием API-интерфейсов win32, а не ASP.NET. Это означает, что они работают для всех запросов (включая статические страницы и изображения), а не только запросы, прошедшие через конвейер ASP.NET. Используя модуль Native-Code, можно удалить нежелательные заголовки в самом конце запроса, что означает, что вы можете удалить заголовки (включая заголовок "Сервер" ) независимо от того, где они были установлены.
Бинарники и исходный код примера. Модуль Native-Code для удаления заголовков в IIS 7.0 до 8.5 доступен в следующей статье.
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
Ответ 3
Просто используйте ярлык в сегменте пользовательских заголовков в web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Custom-Name1" value="MyCustomValue1" />
<add name="X-Custom-Name2" value="MyCustomValue2" />
</customHeaders>
</httpProtocol>
</system.webServer>
Для динамических заголовков этот код можно использовать в Global.ascx:
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
Ответ 4
Это мертво просто. Просто создайте настраиваемый модуль:
public class HeaderStripModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
}
public void Dispose(){}
}
И затем зарегистрируйтесь в web.config
или applicationHost.config
, если вы хотите реализовать машину в целом.
<system.webServer>
<modules>
<add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
</modules>
</system.webServer>
Ответ 5
URLScan был прекращен начиная с IIS 7.5, так как его функции должны быть доступны через опцию "фильтрация запроса" (функция добавлена в IIS 7.5).
Но параметр URLScan "Удалить серверный заголовок" не похож на эквивалент "фильтрации запросов".
Как сказано в этом ответе и этот ответ на ваш вопрос, вы можете очистить Server
с URLRewrite вместо этого, который остается доступным в IIS 8/8.5 (с некоторым обновлением, необходимым для его интерфейса в консоли администрирования IIS).
Оказывается, глядя на этот блог, что URLScan все еще можно установить на IIS 8/8.5, если отсутствие официальной поддержки не проблема.
Я не тестировал себя. Вот шаги:
- Установите совместимость IIS 6 Metabase (если она еще не существует)
- Установите фильтры Isapi (если они еще не существуют)
- Установить URLScan (из загрузочного установщика, а не из установщика веб-платформы).
- Настройте URLScan через его
ini
файл (по умолчанию вC:\Windows\System32\inetsrv\urlscan
)
Может быть, некоторые iisreset
или даже перезагрузка должны быть выполнены. URLScan должен быть видимым в IIS среди фильтров Isapi.
Ответ 6
Проблема заключается в том, что вы нажимаете
Неверный запрос - неверный URL-адрес HTTP-ошибка 400. Недопустимый URL-адрес запроса.
Запрос не попадает в модуль перезаписи URL. В моем случае для IIS 8.5 мне пришлось сделать следующее:
-
Перейти к: HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
-
Добавить:
DWORD DisableServerHeader value = 1
-
open powershell
net stop http net start http
-
Перейдите в диспетчер IIS, перезагрузите свои веб-сайты и вуаля!
Ответ 7
Для решения вышеуказанной проблемы добавьте приведенный ниже код в Global.asax.cs
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
После большого количества просмотров проблема была решена.
Ответ 8
Теперь возможно удалить заголовок Server
из web.config
начиная с IIS 10.0:
<security>
<requestFiltering removeServerHeader ="true" />
</security>
Подробнее о том, как удалить все ненужные/ненужные заголовки, можно найти здесь.
Обратите внимание, что это скрывает заголовок сервера от "приложения", как и все другие подходы. Если вы, например, достигли какой-либо страницы по умолчанию или страницы ошибки, созданной самим IIS или ASP.NET вне вашего приложения, эти правила не будут применяться. Поэтому в идеале они должны находиться на корневом уровне в IIS, и этот порог может оставить некоторые сообщения об ошибках для самого IIS.
В IIS 10 есть ошибка, из- за которой он иногда показывает заголовок даже с помощью config. Это должно быть исправлено, но IIS/Windows должен быть обновлен.
Ответ 9
В диспетчере IIS на уровне сервера перейдите в представление "Возможности". Нажмите "Заголовки ответов HTTP". Вы можете добавлять/удалять заголовки. Вы также можете управлять заголовками ответов на уровне сайта.