おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

HTTPのStrict-Transport-Securityレスポンスヘッダーについて勉強してみた。

はじめに

HTTPのStrict-Transport-Securityについて勉強してみました。

Strict-Transport-Security

Strict-Transport-SecurityはHTTPレスポンスヘッダーの一部です。
Strict-Transport-Securityが設定されている場合、httpでアクセスされた際にブラウザがhttps通信へ変更してWebサーバへ問い合わせを行います。

設定は以下のようにmax-age(秒数)などキャッシュ期間を指定します。
Strict-Transport-Security: max-age=999999;

リダイレクトとの違い

似たような処理として、301などのリダイレクトがあります。
httpの通信が来た際にリダイレクトを行ってhttpsのURLへアクセスするという手法も実例としてありますが、この2つは何が違うのでしょうか。

それはリダイレクトの場合、毎回1度はhttpの通信が発生してしまうのに対してStrict-Transport-Securityはhttp通信が発生するのが最初の1度目のみということです。
※preloaded HTTP Strict-Transport-Security(preloaded HSTS)という手法を用いると最初の1度目すらもhttp通信が発生しないようですが、一旦今回は省略します。

毎回httpの通信が走ってしまうリダイレクトの場合はその分盗聴されるリスクもあるため、セキュリティ的な観点から見るとStrict-Transport-Securityを用いる方が良さそうです。

おわりに

以上、Strict-Transport-Securityについてでした。