在 HAProxy / url-encoding 中阻止特定的 URL

3 url regex access-control-list haproxy

我正在尝试限制对特定 URL 的访问。它不应该被允许访问/admin.php。

frontend example
  acl restricted_page path_beg -i /admin\.php
  http-request deny if restricted_page
Run Code Online (Sandbox Code Playgroud)

这工作正常,HAProxy 阻止访问此 URL。但是当我输入http://example.org/ad%6Din.php(%6D = "m" 的十六进制代码)时,HAProxy 不会限制访问。

做这个的最好方式是什么?

  • HAProxy 中是否有选项,或者我是否需要将匹配“admin.php”的正则表达式指定为纯文本和/或 url 编码?
  • 还有其他方法可以绕过限制吗?

谢谢!

Gre*_*egL 7

碰巧的是,HAProxy 有一个转换器来解码该字段,确保您的 ACL 始终匹配给定的字符串。

url_dec
将提供的 url 编码字符串作为输入,并将解码后的版本作为输出返回。输入和输出都是字符串类型。

你会像这样使用它。

frontend example
  acl restricted_page path_beg,url_dec -i /admin.php
  http-request deny if restricted_page
Run Code Online (Sandbox Code Playgroud)