Tomcatのアクセス制限は、ワイルドカード指定ではなく正規表現

ちょっとはまった。

アクセス制限における<Valve>タグの設定例を記載します。

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         deny="192.0.0.*, 127.0.0.*" />
http://www.javaroad.jp/opensource/js_tomcat7.htm

ということが書いてあるんですが、これを見るとワイルドカードで指定可能のように見えます。

Tomcatのソースでは、

reList.add(new RE(pattern));

と、org.apache.regexp.RE の正規表現のインスタンスを作って、そのmatchメソッドで比較しているようでした。

ということは、192.0.1.* という記述をしたら、

192.0.1.0 ~ 192.0.19.255
192.0.100.0 ~ 192.0.199.255

と意図していない無数(は大袈裟)のIPにもマッチしてしまうんじゃないか。

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         deny="^192\.0\.0\.,^127\.0\.0\." />

五月蝿く書くならこうですかね。


勘違いは恐いです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください