servertokens prod 是唯一能彻底隐藏版本信息的配置,因其仅返回“server: apache”,而 minimal 和 os 仍暴露版本号或操作系统,易被扫描器识别。

ServerTokens Prod 为什么必须设成 Prod 而不是 Minimal 或 OS
ServerTokens 控制 HTTP 响应头中 Server 字段的详细程度。设成 Minimal 仍会返回 Server: Apache/2.4.52,含主版本号;OS 更糟,会追加操作系统标识如 (Win64) 或 (Ubuntu)。只有 Prod 严格限制为 Server: Apache —— 这是唯一能通过基础扫描器(如 nmap -sV、whatweb)检测的“安全档位”。别信“Minimal 差不多”,实际一扫就露馅。
为什么改了 httpd.conf 还没生效:XAMPP 的配置文件路径陷阱
XAMPP 的 ServerTokens 和 ServerSignature 默认**不在 httpd.conf 主文件里直接写死**,而是被 Include 进来。常见真实位置是:C:\xampp\apache\conf\extra\httpd-default.conf(Windows)或 /opt/lampp/etc/extra/httpd-default.conf(Linux/macOS)。你如果只改了 httpd.conf 却没搜到这两行,等于白改。
- 用文本编辑器全局搜索
ServerTokens和ServerSignature,确认它们出现在哪个文件里 - 检查
httpd.conf中是否包含类似Include "conf/extra/httpd-default.conf"的行 - 若存在多个匹配项(比如
httpd-vhosts.conf里又写了ServerTokens Full),后加载的会覆盖前面的——必须全部统一为Prod和Off
ServerSignature Off 只管错误页,不管响应头
ServerSignature Off 的作用非常具体:它只移除 403/404/500 等错误页面 HTML 底部的服务器信息(比如 “Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.0” 这行文字)。但它对 HTTP 响应头里的 Server 字段**完全无效**。所以即使你关了 ServerSignature,用 curl -I http://localhost 依然能看到 Server: Apache/2.4.52 —— 这是新手最常误判的点。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 验证时务必分两步:先
curl -I看响应头,再访问/nonexistent看 HTML 错误页底部 - 想彻底干掉响应头里的
Server,得启用mod_headers并加Header unset Server(注意:该指令不能放在<directory></directory>块内,必须在<virtualhost></virtualhost>或全局上下文) - 某些 XAMPP 版本默认未启用
mod_headers,需手动取消httpd.conf中#LoadModule headers_module modules/mod_headers.so前的注释
PHP 的 expose_php=Off 别漏掉
XAMPP 同时跑 PHP,而 PHP 默认会在响应头里加 X-Powered-By: PHP/8.1.0。这和 Apache 的 Server 头一样,是扫描器一眼识别的线索。它不归 Apache 配置管,得单独处理:
- 编辑
C:\xampp\php\php.ini(Windows)或/opt/lampp/etc/php.ini(Linux/macOS) - 找到
expose_php = On,改为expose_php = Off - 改完必须重启 Apache(不是只重启 PHP),否则不生效
- 验证方式同上:
curl -I http://localhost查看是否还有X-Powered-By头
真正起效的隐藏,是路径、模块、层级三者对齐——少一个环节,curl -I 就会立刻打脸。别依赖“看起来没了”,HTTP 头才是攻击者最先盯上的地方。










