HSTS

読み:えいちえすてぃーえす / 英語表記:HTTP Strict Transport Security

Webサイトが、HTTPの応答ヘッダーのStrict-Transport-Securityフィールドで、指定した期間はそのサイトへのアクセスを必ずHTTPSで行うように、Webブラウザに指示する仕組み。

イマシルちゃんの解説

ブラウザで「http://」のままサイトを開くと、最初の1回は、暗号化されていない通信になっちゃうことがあるんだ。
その一瞬をねらって、悪い人が通信を横取りすることもあるんだよ。

そこで、サイトが「これから1年間は、うちには必ず暗号化して来てね」ってブラウザにお願いしておくんだ。
ブラウザはそれを覚えていて、次からは、最初から暗号化した通信でアクセスしてくれるんだよ。

より深い解説

定義

HSTS(HTTP Strict Transport Security)は、RFC 6797で定められた仕組みである。HTTPSの応答に Strict-Transport-Security ヘッダーを付けると、ブラウザは、指定された期間、そのドメインへのアクセスを自動的にHTTPSに切り替え、証明書のエラーがあるときは、利用者が警告を無視して接続することもできなくする。

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
指定意味
max-ageHTTPSを強制する期間(秒)。31536000秒は1年
includeSubDomainsサブドメインにも適用する
preloadブラウザにあらかじめ組み込まれる一覧(HSTSプリロードリスト)への登録を希望する

防げる攻撃

利用者が http:// でアクセスしたり、HTTPのリンクをたどったりすると、HTTPSへ転送されるまでの最初の通信は暗号化されない。中間者は、ここでHTTPSへの転送を妨げ、利用者とHTTPのまま通信させることができる(SSLストリッピング)。HSTSを使うと、ブラウザが最初からHTTPSで接続するため、この攻撃を防げる。

ただし、初めてアクセスするときは、まだヘッダーを受け取っていないため守られない。プリロードリストに登録すると、初回のアクセスも守られる。

セキュリティに関する主な応答ヘッダー

ヘッダー働き
Strict-Transport-Security指定した期間、HTTPSでのアクセスを強制する
Content-Security-Policy読み込んでよいスクリプトや画像などの取得元を制限し、XSSなどの被害を減らす
X-Content-Type-Optionsnosniff を指定し、ブラウザが Content-Type を無視して内容から種類を推測するのを防ぐ
X-Frame-Optionsほかのサイトのフレームに表示させない(クリックジャッキングの対策)
X-XSS-Protection古いブラウザのXSSフィルタを有効にする(現在は使われない)

実際の試験ではここに出る!

この用語が出てくる記事

↑