jp.terasoluna.fw.web.thin
クラス ExtensionFilter

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

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

拡張子チェックを行う。

指定された禁止拡張子をもつパスへのアクセス要求に対しては、 SC_NOT_FOUND(404)エラーを返す。これにより、ファイル への直接アクセスを禁止する。
禁止拡張子へのアクセス制限を行う場合でそのチェック対象からはずしたい 特別なパスがあれば、プロパティファイルにrestrictionEscape. というプレフィクスをつけた数字をキーとして定義することでチェック非対象の パスを1から複数定義できる。
また、直接アクセス禁止対象の拡張子は access.control.prohibited.extension. というプレフィクスをつけたキー名で 1から指定すること。

プロパティファイル設定例

 # 拡張子制限チェック対象外にするパスを1から順に指定する。
 restrictionEscape.1=/sample/logon/index.jsp
 restrictionEscape.2=/sample/error/error.jsp

 # 拡張子ごとの直接アクセス制限チェック対象の拡張子を1から順に指定する。
 access.control.prohibited.extension.1=.jsp
 access.control.prohibited.extension.2=.csv
 access.control.prohibited.extension.3=.pdf
 

使用方法

この機能を使用するには デプロイメントディスクリプタ(web.xml)に 以下のように設定する。

 <filter>
   <filter-name>extensionFilter</filter-name>
   <filter-class>
     jp.terasoluna.fw.web.thin.ExtensionFilter
   </filter-class>
 </filter>

 <filter-mapping>
   <filter-name>extensionFilter</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>
 


フィールドの概要
static java.lang.String EXTENSION_THRU_KEY
          リクエストがフィルタを通過したことを示すリクエスト属性のキー。
private static org.apache.commons.logging.Log log
          ログクラス。
private static java.lang.String PROHIBITED_EXTENSION_PREFIX
          ApplicationResourceから取得する、直接アクセスを禁止する拡張子の キーにつけるプレフィクス。
private  java.util.List<java.lang.String> prohibitedExtensionList
          Webブラウザからの直接アクセスを禁止する拡張子のリスト。
static java.lang.String RESTRICTION_ESCAPE_PREFIX
          ApplicationResourceから取得する、拡張子制限チェックを対象外にする パスのキーにつけるプレフィックス。
private  java.util.List<java.lang.String> restrictionEscapePaths
          拡張子制限チェックの対象外となるパスのリスト。
 
コンストラクタの概要
ExtensionFilter()
           
 
メソッドの概要
 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
 

フィールドの詳細

EXTENSION_THRU_KEY

public static final java.lang.String EXTENSION_THRU_KEY
リクエストがフィルタを通過したことを示すリクエスト属性のキー。

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

RESTRICTION_ESCAPE_PREFIX

public static final java.lang.String RESTRICTION_ESCAPE_PREFIX
ApplicationResourceから取得する、拡張子制限チェックを対象外にする パスのキーにつけるプレフィックス。

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

log

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


PROHIBITED_EXTENSION_PREFIX

private static final java.lang.String PROHIBITED_EXTENSION_PREFIX
ApplicationResourceから取得する、直接アクセスを禁止する拡張子の キーにつけるプレフィクス。

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

prohibitedExtensionList

private java.util.List<java.lang.String> prohibitedExtensionList
Webブラウザからの直接アクセスを禁止する拡張子のリスト。


restrictionEscapePaths

private java.util.List<java.lang.String> restrictionEscapePaths
拡張子制限チェックの対象外となるパスのリスト。

コンストラクタの詳細

ExtensionFilter

public ExtensionFilter()
メソッドの詳細

init

public void init(javax.servlet.FilterConfig config)
          throws javax.servlet.ServletException
フィルタがサービス開始状態になる際に、コンテナによって呼び出される。 コンテナは、Filterをインスタンス化した後に、init メソッドを 1 回だけ呼び出す。
Filterにフィルタ処理作業を実行するように要求するには、 init メソッドが正常に 終了していなければならない。 initメソッドが 次のいずれかの状態の場合、コンテナは Filterをサービス状態にできない。

定義:
インタフェース javax.servlet.Filter 内の init
パラメータ:
config - FilterConfigインスタンス。
例外:
javax.servlet.ServletException - 初期化異常時にスローされる例外。
関連項目:
Filter.init(javax.servlet.FilterConfig)

doFilter

public void doFilter(javax.servlet.ServletRequest req,
                     javax.servlet.ServletResponse res,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
拡張子チェックを行う。

定義:
インタフェース javax.servlet.Filter 内の doFilter
パラメータ:
req - HTTPリクエスト
res - HTTPレスポンス
chain - フィルタチェーン
例外:
java.io.IOException - I/Oエラー
javax.servlet.ServletException - サーブレット例外
関連項目:
Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

destroy

public void destroy()
フィルタ処理時に呼び出される。
このクラスでは処理は行なわない。

定義:
インタフェース javax.servlet.Filter 内の destroy
関連項目:
Filter.destroy()