Tomcat: Configuration References 2
Tomcat 8 Configuration Reference
- Container Provided Filters
- The Valve Component
Container Provided Filters
http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html
web.xml
に書いて使うやつ
AddDefaultCharsetFilter
明示的にContent-Typeのcharset=encoding指定する事でXSS攻撃から守るやつ - encoding
A value of default will use ISO-8859-1.
CorsFilter
Access-Control-*
付けるやつ
CsrfPreventionFilter
sessionにあるattributeとrequestにあるattribute使ってCSRF防いでくれるやつ
ExpiresFilter
画像、css、jsにCache-Control: max-age=
つけてくれる
FailedRequestFilter
パラメータのパース失敗や個数上限などの制約に引っかかった際に、エラーを返すやつ
失敗情報とかはリクエストの"org.apache.catalina.parameter_parse_failed"
ってattribute見る
HttpHeaderSecurityFilter
Strict-Transport-Security: max-age=0
- HSTS
X-Frame-Options: deny
- Click-jacking protection
X-Content-Type-Options: nosniff
- Block content sniffing
RemoteAddrFilter
ServletRequest.getRemoteAddr()
でallow/deny
RemoteHostFilter
ServletRequest.getRemoteHost()
でallow/deny
RemoteIpFilter
mod remoteipの移植
X-Forwarded-For
を見てクライアントのipやhostnameを書き換える
また、X-Forwarded-Proto
を見て、scheme、port、request.secure
などを変更する
RequestDumperFilter
リクエストとレスポンスをdumpするけど、副作用がある(パラメータがデコードされる)から注意してとのこと
SetCharacterEncodingFilter
皆大好きSetCharacterEncodingFilter
ServletRequest.setCharacterEncoding()
呼んですきなエンコーディングを入れれる
WebdavFixFilter
MSのWebDAVクライアントには80番portを使うのとそれ以外を使うのがいるけど、こいつを通すと上手くいくよ
The Valve Component
Valveは(Engine, Host, Contextなどの)リクエスト処理パイプラインに組み込まれるやつ
AccessLogValve
セッションIDとかも出しといた方が良さそうだなー
ExtendedAccessLogValve
ってのもあって、なんかpatternの書き方が違うらしい
RemoteAddrValve
RemoteAddrFilter
と同じ
RemoteHostValve
RemoteHostFilter
と同じ
RemoteIpValve
RemoteIpFilter
と同じ
SSLValve
mod_proxy
とかするとSSL情報が消えてしまうから、mod_headers
が付けてくれる情報で元に戻すやつ
ssl_client_cert
, ssl_cipher
, ssl_session_id
, ssl_cipher_usekeysize
などのヘッダから値を取り出して、attributeに入れる
SingleSignOn
Request.userPrincipal
に認証情報が入ってるから、複数アプリケーションある場合などに、これ使って認可(expireとかもチェックしてる)
setUserPrincipal
はこの中でもしてるし、下のAuthenticatorBase
でもしてる
Authenticator
BasicAuthenticator
DigestAuthenticator
FormAuthenticator
SSLAuthenticator
- SSLの認証(証明書)見る
SpnegoAuthenticator
- SPNEGO/Kerberos support
色んな方法で認証して、userPrincipal
に認証情報入れるヨ
ErrorReportValve
HTMLエラーページ出すエラーハンドラ
CrawlerSessionManagerValve
たくさん来るクローラにいちいちセッション生成しても無駄だし、UA見てクローラだったら全部同じセッション使わせるってやつ
- crawlerUserAgents
.*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.*
StuckThreadDetectionValve
処理に時間のかかってるリクエストを調べて、詰まってるthreadを検知するやつ。見つけた場合には、通常tomcatのログにWARN
でスタックトレースを出す。stuckThreadIds
とstuchThreadNames
のattributeを用いてJMXを通してIDや名前を見つける事もできる。
- threshold
- 600 (= 10分)
SemaphoreValve
同時に処理するリクエスト数を制限できるやつ