limitrequestline不能直接防御slowloris等慢速攻击,但能间接缓解其危害:通过将值设为2048–4096并置于主配置或virtualhost块中,可快速拒绝超长url请求,减少解析延迟与缓冲区压力,配合limitrequestfields 40和limitrequestfieldsize 2048形成基础防护闭环。

调整 LimitRequestLine 本身不能直接防御慢速攻击(如 Slowloris),但它能有效防范一类特定的畸形请求——超长 URL 触发的解析延迟或缓冲区压力,属于基础层防护的一环。
为什么 LimitRequestLine 对慢速攻击有间接作用
Slowloris 的核心是“极慢发送请求头”,而非拼凑超长 URL;但攻击者常混合手法,例如构造带数千字符参数的 GET 请求,配合慢速发送,加剧 Apache 解析负担。过大的 LimitRequestLine 值(如默认 8190 或更高)会让服务器为这种畸形请求分配更多内存和时间,延长其存活周期,变相助涨攻击效果。
合理设限可快速拒绝明显异常的请求行,减少无效连接在 MPM 工作者中排队等待解析的时间,从而腾出资源应对真实流量。
推荐配置值与位置
该指令必须放在全局配置上下文(httpd.conf 或主服务器块),不可写入 .htaccess 或 <directory></directory> 段内,否则不生效。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 普通网站建议设为
LimitRequestLine 4096—— 足够容纳常规路径+合理查询参数,同时拦截绝大多数恶意长 URL - 若业务明确无需复杂查询(如纯静态站、API 网关前置),可进一步收紧至
2048 - 严禁设为超过 8190,Apache 内部缓冲机制在此值之上可能引发未定义行为或性能陡降
配合其他头部限制才真正闭环
单靠 LimitRequestLine 不足以构成防御体系。它需与以下参数协同生效:
-
LimitRequestFields 40:限制 Header 字段总数,防“伪造数百个 X-Forwarded-For”类耗尽解析器资源的攻击 -
LimitRequestFieldSize 2048:约束单个 Header(如 Cookie、Authorization)长度,避免巨型 JWT 或恶意 Token 导致栈溢出 -
Timeout 30:整体请求最大等待时间下调,缩短攻击窗口(注意:这不是替代mod_reqtimeout,而是补位)
验证是否生效
配置后重启 Apache(非 reload),用 curl 构造超长 URL 测试:
curl -v "http://your-site/$(printf 'a%.0s' {1..5000})"
应立即返回 400 Bad Request,且 error_log 中出现类似 request failed: URI too long 的日志。若返回 200 或超时,则说明配置未加载或位置错误。










