HSTS (HTTP Strict Transport Security)

メール & セキュリティ
ブラウザを強制して HTTPS のみでウェブサイトに接続するセキュリティヘッダー。ダウングレード攻撃を防ぎます。
← 用語集に戻る

HSTSとは?

HSTS(HTTP Strict Transport Security)は、ブラウザがHTTPS経由でウェブサイトとしかやりとりするWebセキュリティメカニズムです。 ブラウザがHSTSヘッダを見たら、自動的にHTTPSへの将来のリクエストをアップグレードし、ユーザーが明示的にhttp://.をタイプしても、プレーンHTTP経由で接続を拒否します

なぜHSTSマター

有効な SSL 証明書でも、脆弱性が存在します。

SSL ストリッピング

1. 「example.com」(https://なし)

2。 攻撃者は初期のHTTPリクエストを介入します

3. HTTPS への攻撃者のプロキシ、ユーザーに HTTP を提示します

4。 ユーザーは、安全だと考えているが、攻撃者はすべてを見る

HSTSは、ブラウザが初期のHTTPリクエストを行わないことを確実にすることでこれを防ぐことができます。

##HSTSのメリット

HSTSヘッダシンタックス

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

ディレクティブ

ディレクティブコンテンツ
最高年齢HSTSを覚える秒 (31536000 = 1年)
サブドメインすべてのサブドメインにHSTSを適用
プレロードブラウザのプレロードリストへの同意

HSTSの実装

####Nginxの

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

##Apache

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

####Cloudflareの

SSL/TLS → Edge 証明書 → HTTP 厳格な輸送セキュリティで有効

###express.js ディレクティブ

const helmet = require('helmet');

app.use(helmet.hsts({

maxAge: 31536000,

includeSubDomains: true,

preload: true

}));

HSTSプリロードリスト

HSTSのプリロードリストは、HTTPS経由でアクセスされるべき唯一のブラウザにハードコードされたドメインのリストです。 これは、最初のリクエストのHTTP脆弱性さえ排除します。

プレロードの要件

1. 有効なSSLの証明書

2。 すべてのHTTPをHTTPSにリダイレクト

3. HSTSヘッダー:

-includeSubDomainsディレクティブ 4。 すべてのサブドメインは HTTPS をサポートする必要があります。

プリロードリストへの投稿

1. 条件を確かめて下さい: hstspreload.org でチェック

2. 送信ドメイン: hstspreload.orgのドメインを入力してください

3. 包含のための待ち: ブラウザの更新のために数週間から数か月かかります

プレロード警告

プリロードは永続的(事実上)です。 リストから削除すると、ブラウザの更新が必要です。 特定のすべてのサブドメインが HTTPS を無期限にサポートする場合のみ、プリロードします。

HSTSのチェック

ブラウザ DevTools:

1. DevTools → ネットワークタブを開く

2. サイトをロードする

3. Strict-Transport-Security の応答のヘッダーを点検して下さい

カールの使用:
curl -I https://example.com | grep -i strict
DomScanの使用:
curl "https://domscan.net/v1/health?domain=example.com"

# Reports hasHSTS in security details

前荷の状態:

hstspreload.orgをチェックしてドメインがプリロードされているかどうかを確認します。

HSTS導入戦略

フェーズ1: ショートマックスエイジ

短時間でテストを始めて下さい:

Strict-Transport-Security: max-age=300
何かが壊れた場合、ユーザーは5分だけキャッシュされます。

フェーズ 2: 期間を増加させる

HTTPS がどこからでも動作確認した後:

Strict-Transport-Security: max-age=86400

フェーズ 3: サブドメインを追加

すべてのサブドメインが HTTPS をサポートしたら:

Strict-Transport-Security: max-age=2592000; includeSubDomains

##フェーズ4:フル展開+プリロード

安定した操作の年後:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
その後、プリロードリストに提出してください。

一般的なHSTSの問題

HTTPSなしのサブドメイン: サブドメインがサブドメインを破る 開発環境: 生産からキャッシュされるHSTSはローカルのdevを破ります CDN/プロキシヘッダー: HSTSヘッダが仲介業者によって除去されていないことを確認してください ミックスコンテンツ: すべてのリソースは HTTPS でなければなりません。HSTS は埋め込まれた HTTP リソースを修正しません。

HSTSは、機密データを処理し、すべてのHTTPSサイトに強く推奨されるあらゆるウェブサイトにとって不可欠です。

この知識を実践する

DomScan の API を使用してドメインの可用性、状態などを確認します。