Server
Применение
Серверы включают заголовок Server, чтобы указать программное обеспечение и необязательные сведения о версии, обрабатывающей запрос. Значение следует формату продуктовых токенов, похожему на заголовок запроса User-Agent: одно или несколько названий продуктов, за каждым из которых необязательно следуют версия и комментарий.
Степень детализации в Server различается от развёртывания к развёртыванию. Раскрытие конкретных версий программного обеспечения создаёт угрозу безопасности. Злоумышленники сканируют известные уязвимости в определённых версиях веб-серверов, фреймворков и операционных систем. Подробный заголовок Server упрощает такую разведку.
Примечание
Раскрытие сведений о версии в заголовке Server помогает злоумышленникам, сканирующим известные уязвимости. В производственных развёртываниях полезно ограничить значение обобщённым названием продукта или полностью убрать заголовок.
Распространённые подходы к снижению этого риска:
Большинство веб-серверов предоставляют параметры конфигурации для управления значением заголовка Server. Nginx использует директиву server_tokens. Apache использует ServerTokens и ServerSignature. Обратные прокси и CDN часто заменяют значение сервера-источника собственным идентификатором.
product
Один или несколько продуктовых токенов, идентифицирующих серверное ПО. Каждый токен необязательно включает версию, отделённую косой чертой, и комментарий в круглых скобках.
Server: <product>/<version> (<comment>)
Несколько продуктов перечисляются через пробел, в порядке значимости.
Пример
Минимальный ответ указывает серверное ПО, не раскрывая номер версии. Это рекомендуемый подход для производственных сред.
Server: nginx
Некоторые серверы включают сведения о версии и операционной системе. Такой формат открывает большую поверхность для сканирования по версиям.
Server: Apache/2.4.57 (Ubuntu)
CDN и облачные платформы часто заменяют значение сервера-источника собственным названием продукта.
Server: cloudflare
Произвольное или намеренно расплывчатое значение скрывает используемый технологический стек.
Server: webserver
Конфигурация
Подавите или минимизируйте заголовок Server, чтобы снизить утечку информации в production.
nginx:
server_tokens off;
Это сокращает значение до nginx без номера версии. Чтобы полностью удалить заголовок, требуется модуль headers-more:
more_clear_headers Server;
Apache:
ServerTokens Prod
ServerSignature Off
ServerTokens Prod сокращает значение до Apache без сведений о версии и модулях. ServerSignature Off убирает информацию о сервере со страниц ошибок.
IIS:
Удалите заголовок с помощью исходящих правил URL Rewrite или задайте removeServerHeader=“true” в applicationHost.config (.NET 8+).