東京都府中市、九段下のWEB制作会社Maromaroのブログです

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の松橋でした。