decadence

個人のメモ帳

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

Apache mod expiresの移植

画像、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

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スタックトレースを出す。stuckThreadIdsstuchThreadNamesのattributeを用いてJMXを通してIDや名前を見つける事もできる。

  • threshold
    • 600 (= 10分)

SemaphoreValve

同時に処理するリクエスト数を制限できるやつ