禁用 trace 和 track 方法可防范跨站跟踪(xst)攻击;推荐在每个 块内配置 traceenable off,仅适用于服务器或虚拟主机级上下文,不支持 .htaccess。
在 apache 虚拟主机中禁用 trace 和 track 方法,是防止跨站跟踪(xst)攻击的关键一步。这两种方法本用于调试,但会将原始请求头(含 cookie、认证信息等)原样回显,极易被恶意 javascript 利用窃取敏感数据。最稳妥的做法是**在每个 <virtualhost></virtualhost> 块内单独配置**,避免全局设置遗漏或继承失效。
推荐方式:用 TraceEnable off(Apache 2.2+)
这是最简洁、最底层的禁用方式,直接关闭协议级支持:
- 编辑对应虚拟主机的配置文件(如
/etc/httpd/conf.d/example.com.conf或vhosts.conf) - 在
<virtualhost></virtualhost>或<virtualhost></virtualhost>块内任意位置添加一行:
TraceEnable off - 保存后执行
systemctl restart httpd或/etc/init.d/httpd restart - 注意:该指令不支持出现在
<directory></directory>或.htaccess中,仅适用于服务器级或虚拟主机级上下文
兼容方式:用 mod_rewrite 规则拦截(所有版本通用)
若 Apache 版本较老(
- 确保
mod_rewrite已启用(检查httpd.conf中LoadModule rewrite_module modules/mod_rewrite.so未被注释) - 在
<virtualhost></virtualhost>内的<directory></directory>块或直接在<virtualhost></virtualhost>块中添加:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
其中 [F] 返回 403 Forbidden,比返回 405 更明确拒绝,且不暴露服务细节。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
验证是否生效
禁用后务必实测确认,避免配置未加载:
- 使用 curl 测试:
curl -X TRACE http://your-domain.com/应返回 403 或连接被拒 - 用 telnet 手动发请求更直观:
telnet your-domain.com 80→ 输入TRACE / HTTP/1.1→ 换行两次 → 观察响应状态码 - 注意:部分扫描工具(如 Nikto、Nmap)也会检测此问题,可辅助验证
额外提醒:别忽略 TRACK 和 OPTIONS 的组合风险
TRACK 是微软早期实现的类似 TRACE 的方法,同样危险;OPTIONS 则可能泄露服务器信息。如需一并禁用,可扩展 rewrite 规则:
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
或在 <directory></directory> 中配合 Require method GET POST HEAD(需 Apache ≥2.4),但 rewrite 方式兼容性更广、语义更清晰。










