HTTPQUERY
English

Server

用法

服务器包含 Server 头部以标识处理请求的软件及可选的版本信息。其值遵循与 User-Agent 请求头类似的产品令牌格式:一个或多个产品名称,每个后面可选地跟随版本号和注释。

Server 中的详细程度因部署而异。暴露具体的软件版本会带来安全风险。攻击者会扫描特定版本的 Web 服务器、框架和操作系统中的已知漏洞。详尽的 Server 头部会简化这种侦察。

注意

在 Server 头部中暴露版本信息会帮助扫描已知漏洞的攻击者。生产环境部署宜将其值限制为通用产品名称,或完全移除该头部。

缓解此风险的常见做法包括:

大多数 Web 服务器都提供配置选项来控制 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 头部,以减少信息泄露。

nginx:

server_tokens off;

这会将值缩减为不含版本号的 nginx。要完全移除该头部,需要 headers-more 模块:

more_clear_headers Server;

Apache:

ServerTokens Prod
ServerSignature Off

ServerTokens Prod 会将值缩减为不含版本或模块详情的 Apache。ServerSignature Off 会从错误页面中移除服务器信息。

IIS:

通过 URL Rewrite 出站规则移除该头部,或在 applicationHost.config(.NET 8+)中设置 removeServerHeader=“true”。