Apache可通过<LimitExcept>指令精确限制HTTP方法:在<Directory>或<Location>块中配置仅允许GET、POST、HEAD等必要方法,其余返回405错误;需配合Require all denied(Apache 2.4+语法),并建议全局禁用TRACE(TraceEnable off)。

Apache 默认允许常见的 HTTP 方法(如 GET、POST、HEAD),但若只需开放部分方法,比如仅允许 GET 和 HEAD,而禁用 PUT、DELETE、TRACE 等潜在风险方法,可通过配置实现精确控制。
在目录或虚拟主机中限制 HTTP 方法
推荐在 <Directory> 或 <Location> 块中使用 <LimitExcept> 指令。它明确列出“被允许的方法”,其余全部拒绝。
- 编辑 Apache 主配置文件(如
/etc/httpd/conf/httpd.conf)或站点配置(如/etc/httpd/conf.d/your-site.conf) - 在对应路径块内添加:
<LimitExcept GET POST HEAD>
Require all denied
</LimitExcept>
</Directory>
该配置表示:只允许 GET、POST、HEAD 请求,其他所有方法(如 OPTIONS、PUT、DELETE、TRACE、CONNECT)均返回 405 Method Not Allowed。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
针对整个服务器或特定 URL 路径限制
若需在更细粒度上控制(例如 API 接口路径仅允许 POST),可将 <LimitExcept> 放入 <Location> 块:
<LimitExcept POST>
Require all denied
</LimitExcept>
</Location>
注意:Require all denied 是 Apache 2.4+ 的标准写法,不兼容旧版的 Order/Deny/Allow 语法。
额外建议:禁用高危方法并验证效果
某些方法(如 TRACE)可能被用于跨站追踪攻击(XST),建议默认禁用:
- 在全局配置中加入:
TraceEnable off(Apache 2.2+ 支持,2.4 默认已关闭) - 重启服务后测试:
curl -X DELETE http://your-server/应返回 405;curl -X GET http://your-server/正常响应 - 检查访问日志,确认非允许方法请求已被拦截且无错误暴露内部信息

















