apache不提供一键丢弃畸形请求的开关,需分层防护:协议层用traceenable off禁用trace/track;方法层用白名单控制;内容层用mod_rewrite或map+if拦截恶意字符;资源层通过client_header_buffer_size等参数限制header大小与数量。

Apache 本身不提供“主动丢弃畸形请求”的一键开关,它默认会尽力解析并处理收到的 HTTP 报文。所谓“畸形请求”(如非法字符头、超长 header、CRLF 注入、空行缺失、非标准方法、乱码 URI 等),Apache 的应对策略是分层响应:有的直接拒绝(如 TraceEnable off),有的静默忽略(如 ignore_invalid_headers on),有的交由后续模块或后端处理。真正实现过滤并丢弃,需组合配置,而非依赖单一指令。
✅ 用 TraceEnable off 主动禁用高危协议级方法
这是最彻底的“丢弃”——在请求解析早期就切断,不进入路由、不记录日志、不触发 rewrite 或 PHP。
- 仅对
TRACE和TRACK生效(HTTP/1.1 已废弃,但仍是常见攻击入口) - 必须放在
<virtualhost></virtualhost>或全局服务器配置中,不能写在.htaccess或<directory></directory>里 - 示例:
TraceEnable off
✅ 用 LimitExcept 白名单控制常规方法准入
不是“丢弃”,而是返回 405 Method Not Allowed,但效果等同于拒绝非法方法(如 DELETE、PUT、DEBUG 在非 API 路径下)。
- 显式列出允许的方法,其余一律拒收
- 必须包含
HEAD(健康检查、缓存验证依赖它),若支持跨域还需加OPTIONS - 示例(放在
<directory></directory>或<location></location>中):<limitexcept get head post options> Require all denied </limitexcept>
✅ 用 mod_rewrite + F 标志返回 403 Forbidden 并终止
适合拦截自定义或非标准方法(如 CONNECT、DEBUG)、含恶意字符的 URI 或 header,响应更明确,且可配合正则灵活匹配。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
-
RewriteRule ^ - [F]表示立即返回 403,不继续处理 - 建议只用于补充,避免与
LimitExcept混用造成逻辑冲突 - 示例(拦截 TRACE/DEBUG/CRLF 尝试):
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|DEBUG|CONNECT) RewriteRule ^ - [F] RewriteCond %{THE_REQUEST} \n.*[[:cntrl:]]+ RewriteRule ^ - [F]
✅ 用 map + if 对关键 header 做内容校验并 return 400
这是针对“畸形 header”的有效手段(如 User-Agent 含控制符、Referer 含 CRLF、Host 含空格等):
-
map预定义匹配逻辑,if触发拦截,return 400终止请求 - 不依赖外部模块,原生支持,开销低
- 示例(拒绝含不可见字符的 User-Agent):
map $http_user_agent $bad_ua { ~*[[:cntrl:]\s] 1; default 0; } <if> return 400 </if>
✅ 限制 header 大小与数量,让畸形报文根本无法送达
Apache 会在解析阶段就截断或拒绝超限请求,属于底层防护:
-
client_header_buffer_size:单个 header 行最大长度(默认 8KB) -
large_client_header_buffers:最多缓存多少个 header 行及每行上限 -
LimitRequestFields:最多允许多少个 header 字段(默认 100) - 示例:
client_header_buffer_size 2k large_client_header_buffers 4 8k LimitRequestFields 50
不复杂但容易忽略。关键在于:没有“万能过滤器”,必须按协议层(TRACE)、方法层(LimitExcept)、内容层(rewrite/map)、资源层(header 限制)分层设防。










