web-dev-qa-db-ja.com

HAProxy / url-encodingで特定のURLをブロックする

特定のURLへのアクセスを制限しようとしています。 /admin.phpへのアクセスを許可しないでください。

frontend example
  acl restricted_page path_beg -i /admin\.php
  http-request deny if restricted_page

これは正常に機能し、HAProxyはこのURLへのアクセスをブロックしています。しかし、 http://example.org/ad%6Din.php (%6D = "m"の16進コード)と入力すると、HAProxyはアクセスを制限していません。

これを行う最良の方法は何ですか?

  • HAProxyにオプションはありますか、それとも「admin.php」に一致するレグルア式をプレーンテキストまたはURLエンコード、あるいはその両方として指定する必要がありますか?
  • 制限を回避する他の方法はありますか?

ありがとう!

1
user336399

たまたま、HAProxyにはフィールドをデコードする converter があり、ACLが常に指定された文字列と一致することを確認します。

url_dec
入力として提供されたURLエンコードされた文字列を受け取り、デコードされたバージョンを出力として返します。入力と出力は文字列型です。

こんな風に使います。

frontend example
  acl restricted_page path_beg,url_dec -i /admin.php
  http-request deny if restricted_page
5
GregL