§セキュリティヘッダの設定
Play には、HTTP レスポンス内のデフォルトヘッダを設定することで、セキュリティの問題を軽減し、新規アプリケーションの防御レベルを増強することのできるセキュリティヘッダフィルタが備わっています。
§セキュリティヘッダフィルタの有効化
セキュリティフィルタを有効にするには、build.sbt
内の libraryDependencies
に Play filters プロジェクトを追加してください:
libraryDependencies += filters
ここで、この filters にセキュリティフィルタを追加しますが、通常これはプロジェクトルートに Filters
クラスを作成することで実現します:
- Scala
-
import javax.inject.Inject import play.api.http.HttpFilters import play.filters.headers.SecurityHeadersFilter class Filters @Inject() (securityHeadersFilter: SecurityHeadersFilter) extends HttpFilters { def filters = Seq(securityHeadersFilter) }
- Java
-
import play.api.mvc.EssentialFilter; import play.filters.headers.SecurityHeadersFilter; import play.http.HttpFilters; import javax.inject.Inject; public class Filters implements HttpFilters { @Inject SecurityHeadersFilter securityHeadersFilter; public EssentialFilter[] filters() { return new EssentialFilter[] { securityHeadersFilter }; } }
Filters
クラスはルートパッケージに置くか、もし違う名前にする、あるいは違うパッケージに置く場合は、application.conf
内で play.http.filters
を使って設定する必要があります:
play.http.filters = "filters.MyFilters"
§セキュリティヘッダの設定
Scaladoc は play.filters.headers パッケージにあります。
このフィルタは HTTP レスポンス内のヘッダを自動的に設定します。これは、以下に示す application.conf
内の設定で制御することができます。
play.filters.headers.frameOptions
- X-Frame-Options を設定し、デフォルトは “DENY” です。play.filters.headers.xssProtection
- X-XSS-Protection を設定し、デフォルトは “1; mode=block” です。play.filters.headers.contentTypeOptions
- X-Content-Type-Options を設定し、デフォルトは “nosniff” です。play.filters.headers.permittedCrossDomainPolicies
- X-Permitted-Cross-Domain-Policies を設定し、デフォルトは “master-only” です。play.filters.headers.contentSecurityPolicy
- Content-Security-Policy を設定し、デフォルトは “default-src ‘self’” です。
あらゆるヘッダは、例えば以下のように値に null
を設定して無効化することができます:
play.filters.headers.frameOptions = null
設定オプションの全一覧は Play filters の reference.conf
を参照してください。
Next: CORS の設定
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。