これは何?
HTTPのレスポンスヘッダにStrict-Transport-SecurityヘッダをつけるとHTTPS通信を強制させることができます。
このヘッダにはmax-ageというパラメータをで本ヘッダの有効期限を指定することができるのですが,この値は長めの値にするほうがセキュリティ的に良いです。
セキュリティの分野では,有効期限は短めにする方がベストプラクティスという場面が多いと感じているので,有効期限が長い方が良いというのは面白いなと思ったのでメモ代わりに記載しました。
結論: なぜmax-ageは長いほうがよいのか
最初にサイトに HTTPS でアクセスして Strict-Transport-Security ヘッダーが返されると、ブラウザーはこの情報を記録し、以降は HTTP を使用してサイトを読み込みもうとすると、自動的に HTTPS を使用するようになります。
Strict-Transport-Security ヘッダーで指定された有効期限が経過すると、次回は自動的に HTTPS を使用するのではなく、通常通りに HTTP でサイトを読み込もうとします。
なお、 Strict-Transport-Security ヘッダーがブラウザーへ送られるたびに、そのウェブサイトに対する有効期限が更新されるので、サイトはこの情報を更新して期限切れを防ぐことができます。
例えば. max-age=1時間の場合、
- ブラウザにStrict-Transport-Securityヘッダが付与される
- 1時間以上の時間が過ぎ,その間に新たなStrict-Transport-Securityヘッダーが付与されない
- 次回のアクセス時にはブラウザはHSTSの情報を保持していないため、HTTP接続を試行する
と言った流れでmax-ageが短い場合には,意図せず,http通信が使用される可能性があります。
そのため,httpsを強制するという意味合いではヘッダの有効期限は長い方が良いです。
実際,OWASPのHTTP Strict Transport Security Cheat Sheetでも,max-ageは2年が設定されています。
追伸
そういえばパスワードの有効期限も長い方がいいなと思ったので,別記事に記載しました。