You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HAProxy中SQL注入检测正则表达式失效问题求助

解决HAProxy中PCRE2正则匹配SQL注入(ORDER BY模式)无效的问题

问题核心原因

HAProxy的path_reg指令仅匹配URL路径部分,如果你的SQL注入payload出现在查询参数、请求体或其他位置,这个ACL自然不会生效。另外,PCRE2在HAProxy中的默认行为和通用正则测试工具可能存在细微差异,比如空格匹配的处理逻辑。

修正方案

1. 选择正确的匹配指令

根据注入payload的位置调整匹配指令:

  • 如果payload在完整URL(路径+查询参数):使用url_reg
  • 如果payload在请求体:启用req.body后使用req.body_reg
  • 如果payload在Cookie:使用cookie_reg

2. 适配HAProxy的PCRE2正则

调整正则表达式,优化匹配逻辑并适配HAProxy的PCRE2特性:

# 匹配完整URL中的ORDER BY注入模式
acl sql_injection url_reg -i .*ORDER[ \t]+BY[ \t]*(-?\d+)(?:--|\#)?.*
  • 用[ \t]替代\s,明确匹配HTTP请求中常见的空白字符(避免匹配换行符)
  • 将捕获组改为非捕获组(?:...),减少不必要的资源消耗
  • 保留-i参数确保忽略大小写匹配(适配示例中的SQlQ这类混合大小写情况)

3. 配置验证与调试

  • 用haproxy -c -f /etc/haproxy/haproxy.cfg检查配置语法是否合法
  • 添加拒绝规则并开启日志,验证匹配效果:
frontend your_frontend
    # ...其他配置
    acl sql_injection url_reg -i .*ORDER[ \t]+BY[ \t]*(-?\d+)(?:--|\#)?.*
    http-request deny if sql_injection
    log-format "%ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"

额外防护建议

单一正则无法完全防御SQL注入,建议结合:

  • 后端使用预编译SQL语句或ORM框架
  • 对用户输入做严格的参数校验与过滤
  • 定期更新HAProxy规则覆盖新的注入模式

内容的提问来源于stack exchange,提问作者Mozarti Generatiti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:17:36