2025.06.02

セキュリティ対策 HSTSとは
こんにちは、Maromaroの松橋です。
WEBサイトの脆弱性診断を利用した時に、 HSTSについて指摘を受ける時があります。
今回はこのHSTSについてまとめたいと思います。
HSTS(HTTP Strict Transport Security)とは
ブラウザで例えば「example.com」にHTTPでアクセスする時に、ブラウザ内のHSTS情報内で「example.com」が存在していれば、HTTPをHTTPSに変換してリクエストを送信します。
この挙動をレスポンスヘッダーで指定するのがHSTSです。
リクエストを行いWEBサイトがHSTS対策をしているのかを確認してみよう!
以下のターミナルコマンドで、サーバーからのレスポンスヘッダーを確認することができます。
これにより、HSTSヘッダーの有無や設定値を確認できます。
HSTSが設定されていれば、strict-transport-securityというキーで値が入っています。
$ curl -I -L https://example.com
HTTP/2 200
・・・ 省略 ・・・
strict-transport-security: max-age=31536000; includeSubDomains
・・・ 省略 ・・・
ブラウザにキャッシュされているHSTS情報を確認してみよう!
Chromeで、chrome://net-internals/#hsts にアクセスし、「Query HSTS/PKP domain」でアクセスしたことがあるドメイン入力しクエリすると、ブラウザ内にあるHSTS情報を確認することができます。
なぜHSTSが必要なのか?
ユーザーが誤ってHTTPでアクセスしてしまうことで、中間者攻撃(ユーザーとWebサーバー間通信に第三者が介入・情報取得)やダウングレード攻撃(わざと意図的にHTTPなどの旧式通信方式でアクセスさせる)といったセキュリティの対策が可能になるためです。
また、ブラウザが自分で判断してHTTPSにアクセスしてくれれば、サーバーへのリクエスト数が減るという恩恵もありますので、設定しておいて損はないと思います。
どのように対策するのか?
ご利用のサーバーで.htaccessを利用できれば、以下を追記するだけで反映されます。
HSTSの有効期間であるmax-age
や、サブドメインでもHSTSを有効にするかのincludeSubDomains
などの設定はWEBサイトの要件に合わせて入れると良いと思います。
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
さいごに
今回は、HSTSについて詳しく書きました!
セキュリティ系のヘッダーはまだ他にもあるので、また紹介したいと思います。
以上、Maromaroの松橋でした。