Tomcatのアクセス制限は、ワイルドカード指定ではなく正規表現
2007/05/23
ちょっとはまった。
アクセス制限における<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\." />
五月蝿く書くならこうですかね。
勘違いは恐いです。