jp.terasoluna.fw.web.rich
クラス ForbiddenURIFilter

java.lang.Object
  上位を拡張 jp.terasoluna.fw.web.rich.ForbiddenURIFilter
すべての実装されたインタフェース:
javax.servlet.Filter

public class ForbiddenURIFilter
extends java.lang.Object
implements javax.servlet.Filter

許可されているURI以外へのアクセスを禁止するフィルタ。

ForbiddenURICheckerで許可されたURI以外は外部からアクセスできないようにする。

以下のように web.xmlにフィルタマッピング定義を行う。

【デプロイメントディスクリプタ(web.xml)の設定例】

   <filter>
     <filter-name>forbiddenURIFilter</filter-name>
     <filter-class>jp.terasoluna.fw.web.rich.ForbiddenURIFilter</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>forbiddenURIFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
 

許可URIのチェックのため、DIコンテナからForbiddenURICheckerを取得する。 取得するBeanIDは”forbiddenURIChecker”とする。 ただしForbiddenURICheckerを取得する際に利用するBeanIDをカスタマイズしたい場合は、 フィルタの初期化パラメータ「”checkerBeanID”」に ForbiddenURICheckerを取得するするためのBean名を記述することで直接指定することができる。 通常は、initParamerの指定は不要である。

【initParameterを利用したデプロイメントディスクリプタ(web.xml)の設定例】

   <filter>
     <filter-name>forbiddenURIFilter</filter-name>
     <filter-class>jp.terasoluna.fw.web.rich.ForbiddenURIFilter</filter-class>
     <init-param>
       <param-name>checkerBeanID</param-name>
       <param-value>newChecker</param-value>
     </init-param>
   </filter>
   <filter-mapping>
     <filter-name>forbiddenURIFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
 

リクエスト のURIが アクセスを許可するURIではなかった場合には、 ForbiddenURIExceptionをスローする。 スローされた例外は、サーブレットのServletが提供しているエラーページの機能を利用すること。 SimpleMappingExceptionResolverExを参照のこと。

【デプロイメントディスクリプタ(web.xml)の設定例】

   <error-page>
       <exception-type>jp.terasoluna.fw.web.rich.exception.ForbiddenURIException</exception-type>
       <location>/error/forbidden-uri-error.jsp</location>
   </error-page>
   ※ あらかじめ固定のエラー電文を記述した/error/forbidden-uri-error.jspを用意しておくこと。
 

不正なアクセスを抑止するフィルタであるため、 出来るだけ早いタイミングで最初に実行されるように設定することが望ましい。


フィールドの概要
private  ForbiddenURIChecker checker
          禁止URIチェッカ。
private static java.lang.String DEFAULT_CHECKER_BEANID
          DIコンテナから禁止URIチェッカを取得する際のBeanIDのデフォルト値。
private static java.lang.String INITPARAM_KEY_CHECKER_BEANID
          初期化パラメータから禁止URIチェッカのBeanIDを取得するためのキー。
private static org.apache.commons.logging.Log log
          ログクラス。
 
コンストラクタの概要
ForbiddenURIFilter()
           
 
メソッドの概要
 void destroy()
          フィルタの破棄処理を行う。
 void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res, javax.servlet.FilterChain chain)
          フィルタ処理する。
 void init(javax.servlet.FilterConfig config)
          フィルタの初期化を行う。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static org.apache.commons.logging.Log log
ログクラス。


DEFAULT_CHECKER_BEANID

private static final java.lang.String DEFAULT_CHECKER_BEANID
DIコンテナから禁止URIチェッカを取得する際のBeanIDのデフォルト値。

関連項目:
定数フィールド値

INITPARAM_KEY_CHECKER_BEANID

private static final java.lang.String INITPARAM_KEY_CHECKER_BEANID
初期化パラメータから禁止URIチェッカのBeanIDを取得するためのキー。

関連項目:
定数フィールド値

checker

private ForbiddenURIChecker checker
禁止URIチェッカ。

コンストラクタの詳細

ForbiddenURIFilter

public ForbiddenURIFilter()
メソッドの詳細

init

public void init(javax.servlet.FilterConfig config)
          throws javax.servlet.ServletException
フィルタの初期化を行う。 禁止URIチェッカをDIコンテナより取得する。

定義:
インタフェース javax.servlet.Filter 内の init
パラメータ:
config - フィルタ設定
例外:
javax.servlet.ServletException - サーブレット例外

doFilter

public void doFilter(javax.servlet.ServletRequest req,
                     javax.servlet.ServletResponse res,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
フィルタ処理する。 禁止されたURIかチェックする。

定義:
インタフェース javax.servlet.Filter 内の doFilter
パラメータ:
req - HTTPリクエスト
res - HTTPレスポンス
chain - チェインされたフィルタ
例外:
java.io.IOException - 入出力例外
javax.servlet.ServletException - サーブレット例外

destroy

public void destroy()
フィルタの破棄処理を行う。 なにもしない。

定義:
インタフェース javax.servlet.Filter 内の destroy