apache可通过指令精确限制http方法:在或块中配置仅允许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></directory> 或 <location></location> 块中使用 <limitexcept></limitexcept> 指令。它明确列出“被允许的方法”,其余全部拒绝。
- 编辑 Apache 主配置文件(如
/etc/httpd/conf/httpd.conf)或站点配置(如/etc/httpd/conf.d/your-site.conf) - 在对应路径块内添加:
Require all denied
该配置表示:只允许 GET、POST、HEAD 请求,其他所有方法(如 OPTIONS、PUT、DELETE、TRACE、CONNECT)均返回 405 Method Not Allowed。
针对整个服务器或特定 URL 路径限制
若需在更细粒度上控制(例如 API 接口路径仅允许 POST),可将 <limitexcept></limitexcept> 放入 <location></location> 块:
Require all denied
注意: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/正常响应 - 检查访问日志,确认非允许方法请求已被拦截且无错误暴露内部信息











