public class ForbiddenURIFilter extends Object implements javax.servlet.Filter
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を用意しておくこと。
不正なアクセスを抑止するフィルタであるため、 出来るだけ早いタイミングで最初に実行されるように設定することが望ましい。
コンストラクタと説明 |
---|
ForbiddenURIFilter() |
public void init(javax.servlet.FilterConfig config) throws javax.servlet.ServletException
init
インタフェース内 javax.servlet.Filter
config
- フィルタ設定javax.servlet.ServletException
- サーブレット例外public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
doFilter
インタフェース内 javax.servlet.Filter
req
- HTTPリクエストres
- HTTPレスポンスchain
- チェインされたフィルタIOException
- 入出力例外javax.servlet.ServletException
- サーブレット例外public void destroy()
destroy
インタフェース内 javax.servlet.Filter
Copyright © 2014. All Rights Reserved.