Spring Securityのドキュメントを1から斜め読む 3
細かいヘッダとかの話。
細かすぎて知らないものが結構あったのと、多分デフォルトで有効になっているため意識して認識できてるものが少ない。
Referrer Policy
- Referrerポリシーは、Webアプリケーションが活用することができる。ユーザーが最後に訪れたページを含むReferrerフィールドを管理するために。
- Spring Securityのアプローチは Referrerポリシーヘッダを使用しており、異なるポリシーを提供する
- どういうことだ??
Referrer-Policy: same-origin
- Referrerポリシーレスポンスヘッダは、ユーザーが以前どこにいたかのソースを宛先に知らせるようにブラウザに指示する
Feature Policy
Feature-Policy: geolocation 'self'
- Feature Policy によって開発者はあなたのサイトを通じて、特定の機能をブラウザの Policies をセットしOpt-inできる
- これらのポリシーはサイトがアクセスできるAPIを制限したり、特定の機能のためにブラウザのデフォルト動作を変更する
Clear Site Data
- Clear Site Data はHTTP レスポンスのヘッダにこれが含まれている場合、ブラウザサイドのデータ、Cookie, Local Storage などを明示的に削除する機能である
Clear-Site-Data: "cache", "cookies", "storage", "executionContexts"
- これはログアウトの際の良いクリーンアップ動作である
- これめっちゃ良いじゃん。使ってるんだろうか。
Custom Headers
- Spring Security はより一般的なセキュリティヘッダをアプリケーションに追加する便利な仕組みを持っている
- しかし、同時にカスタムヘッダを追加することができる Hook も提供している
- Hook ??
5.2.3 HTTP
- 全てのHTTPベースの通信(静的リソースを含む)は TLSの利用により保護されるべき
- フレームワークとして、Spring Securityは HTTP 接続を制御しない
- そのため、HTTPS を直接サポートしていない
- しかし、HTTPS を利用するための助けとなるいくつかの機能を提供する
Redirect to HTTPS
Strict Transport Security
- Spring Security は Strict Transport Security をサポートしておりデフォルトで有効になっている。
Proxy Server Configuration
- Proxyサーバーを使用する時、アプリケーションが適切に設定されていることを確認するのが重要
- 例えば、多くのアプリケーションはロードバランサを持っており、
https://example.com
へのリクエストがhttps://192.168.1:8080
のアプリケーションサーバーにリクエストを転送することで応答するものがある - もし適切な設定がなければ、アプリケーションサーバーはロードバランサの存在を知ることなく、
https://192.168.1:8080
からのリクエストとして扱う
- 例えば、多くのアプリケーションはロードバランサを持っており、
- これを修正するために RFC 7239 を使用してロードバランサを使用していることを指定する
- アプリケーションにこれを認識させるために X-Forwarded ヘッダを認識するように構成する必要がある 例えば、Tomcat は RemoteIpValue を使用し、Jetty は ForwardedRequestCustomizer を使用する
別の手段として、Springユーザーは ForwardedHeaderFilter を使用する手もある
Spring Boot ユーザーは
server.use-forward-headers
プロパティを使うことでアプリケーションの適切な構成を使用できる- 詳しくは Spring Bootのドキュメントを見てね
- https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-use-tomcat-behind-a-proxy-server
次からようやく具体的なモジュールとかの話