apache安全响应头需先启用mod_headers模块,再全局配置x-content-type-options、x-frame-options、strict-transport-security、referrer-policy和x-xss-protection五项基础头,统一用header always set,并配合servertokens prod与serversignature off隐藏服务器指纹。

直接在 Apache 配置中注入安全响应头,是低成本、高实效的防护手段。关键不在于堆砌头部,而在于每一条都精准生效、覆盖所有响应、避开常见陷阱。
必须启用 mod_headers 模块
Header 指令本身不会工作——模块未加载,所有配置都是无效的:
- Debian/Ubuntu 系统执行:a2enmod headers && systemctl restart apache2
- RHEL/CentOS 检查 httpd.conf 中是否含:LoadModule headers_module modules/mod_headers.so
- 运行 apachectl -M | grep headers,输出含 headers_module 才算成功
五个基础安全头及其正确写法
这些头应全局配置(写在 httpd.conf 或 conf.d 下独立文件中,不在
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- X-Content-Type-Options: nosniff —— 强制浏览器不猜测 MIME 类型,防 XSS 嗅探漏洞
- X-Frame-Options: DENY 或 SAMEORIGIN —— 防点击劫持;若已用 CSP,优先用 Content-Security-Policy: frame-ancestors 'none',二者勿共存
- Strict-Transport-Security: max-age=31536000; includeSubDomains —— 仅限 HTTPS 虚拟主机中设置,HTTP 主机里加了也无效;preload 可选,但提交前需确认全站及子域长期稳定支持 HTTPS
- Referrer-Policy: strict-origin-when-cross-origin —— 平衡隐私与功能,跨域时不泄露路径
- X-XSS-Protection: 0 —— 显式关闭旧版过滤器,避免误拦截导致白屏;现代 XSS 防御靠 CSP 和编码,不依赖此头
绕过 CDN 与条件化设置的注意事项
CDN 可能缓存或覆盖响应头,验证必须绕过 CDN 直连源站:
- 用 curl -I https://yourdomain.com 查看原始响应头
- Chrome DevTools → Network → 刷新 → 查看 Headers 标签页
- 某些头需按场景动态控制:例如只对 HTML 响应加 X-Frame-Options,PDF 或 API JSON 不应加;可用
实现条件判断
隐藏服务器指纹,减少信息暴露
响应头中泄露 Apache 版本和模块名,等于给攻击者递刀:
- 在主配置中设:ServerTokens Prod(只显示 “Apache”,不带版本号)
- 同时设:ServerSignature Off(关闭错误页底部的服务器信息)
- 这两项必须配合使用,单独设置效果不完整










