HTTP Strict Transport Security (HSTS) は、プロトコル ダウングレード攻撃や Cookie ハイジャックから Web サイトを保護する Web セキュリティ ポリシー メカニズムです。これにより、Web サーバーは、Web ブラウザー (またはその他の準拠ユーザー エージェント) が安全な HTTPS 接続のみを使用して Web サーバーと対話し、安全でない HTTP プロトコルを介して対話しないことを宣言できます。
クイックガイド: HSTS の実装
-
ウェブサイトが HTTPS 経由で完全にアクセス可能であることを確認します。
-
Web サーバーの応答に Strict-Transport-Security ヘッダーを追加します。
厳格な輸送セキュリティ:max-age = 300; includeSubDomains; プリロード
-
オンライン ツールとブラウザ開発者ツールを使用して HSTS 実装をテストします。
-
正しく実装されていることを確認した後、max-age 値を増やします。
-
セキュリティを最大限に高めるには、ドメインを HSTS プリロード リストに送信することを検討してください。
それでは、HSTS の詳細、その利点、実装上の考慮事項について詳しく見ていきましょう。
HSTS の詳細を理解する
HSTS はどのような問題を解決しますか?
HSTS は、Web サイトが追加の保護なしに HTTPS のみに依存している場合に存在するいくつかのセキュリティ脆弱性に対処するために開発されました。
- SSL ストリッピング攻撃: 攻撃者は最初の HTTP リクエストを傍受し、ユーザーをサイトのセキュリティ保護されていないバージョンにリダイレクトする可能性があります。
- 混合コンテンツ: ページ上の一部のリソースは引き続き HTTP 経由で読み込まれる可能性があり、セキュリティ上の脆弱性が生じます。
- ユーザーの行動: ユーザーは URL を入力するときに手動で「http://」と入力したり、プロトコルを完全に省略したりする可能性があり、安全でない接続にさらされる可能性があります。
HSTS は、ユーザーが HTTP 経由でサイトにアクセスしようとした場合でも、すべての接続で HTTPS を使用するように強制することで、これらの問題を軽減します。
HSTSの仕組み
Web サーバーが応答で HSTS ヘッダーを送信すると、ブラウザーに次の指示が送られます。
- すべての安全でない HTTP リンクを安全な HTTPS リンクに自動的に変換します。
- ユーザーが証明書の警告をバイパスできないようにします。
- この命令を指定された期間(max-age ディレクティブによって定義されます)記憶します。
HSTS ヘッダー コンポーネントの内訳は次のとおりです。
- 最大年齢: ブラウザが HTTPS を強制することを記憶する時間 (秒単位) を指定します。
- サブドメインを含める: (オプション) 現在のドメインのすべてのサブドメインに HSTS ポリシーを適用します。
- プリロード: (オプション) ドメイン所有者が、自分のドメインをブラウザにプリロードすることに同意していることを示します。
HSTS 導入のメリット
- セキュリティ強化: 中間者攻撃、SSL ストリッピング、Cookie ハイジャックから保護します。
- ユーザーエクスペリエンスの向上: HTTP リクエストを HTTPS に自動的にリダイレクトし、待ち時間を短縮します。
- SEOの利点: 検索エンジンは安全なウェブサイトを優先するため、検索ランキングが向上する可能性があります。
- コンプライアンス: データ保護とプライバシーに関するさまざまな規制要件を満たすのに役立ちます。
Web サーバーに HSTS を実装する
ステップ1: ウェブサイトをHTTPS対応にする
HSTS を実装する前に、Web サイトが HTTPS 経由で完全に機能することを確認してください。
- SSLを取得する/TLS SSL.com などの信頼できる証明機関からの証明書。
- Web サーバーに証明書をインストールします。
- HTTPS を使用するように Web サーバーを構成します。
- すべての内部リンクを更新して HTTPS を使用します。
- すべての外部リソース (スクリプト、画像など) が HTTPS 経由で読み込まれることを確認します。
ステップ2: HSTSヘッダーを追加する
まず、短い max-age 値を持つ HSTS ヘッダーを追加して、構成をテストします。たとえば、max-age=300 (5 分) を使用します。
アパッチ
.htaccess ファイルまたはサーバー構成に次の内容を追加します。
ヘッダ 常にStrict-Transport-Securityを設定する 「max-age=300; includeSubDomains; プリロード」
nginx
Nginx 構成のサーバー ブロックに以下を追加します。
ヘッダーを追加 厳格な輸送セキュリティ 「max-age=300; includeSubDomains; プリロード」 いつも;
IIS
IIS の場合、web.config ファイルを通じてヘッダーを追加できます。
<システム.webServer>
<httpプロトコル>
<カスタムヘッダー>
<加えます 名=「厳格な輸送セキュリティ」 値=「max-age=300; includeSubDomains; プリロード」/>
</カスタムヘッダー>
</httpプロトコル>
</システム.webServer>
ステップ3: HSTS実装をテストする
ヘッダーを追加した後、実装をテストすることが重要です。
-
オンラインツールを使用するSSL Labs や Security Headers などのツールを使用すると、HSTS ヘッダーが存在し、正しく構成されていることを確認できます。
-
ブラウザ開発ツール:
-
ブラウザ(Chrome や Firefox など)で Web サイトを開きます。
-
F12 キーを押して開発者ツールを開きます。
-
[ネットワーク] タブに移動します。
-
ページを更新し、最初のリクエスト (通常はドメイン) を選択します。
-
送信されていることを確認するには、ヘッダー セクションの Strict-Transport-Security ヘッダーを探します。
-
-
HTTPS の強制をテストする:
-
http:// 経由で Web サイトにアクセスし、https:// にリダイレクトされることを確認してください。
-
includeSubDomains ディレクティブを含めた場合は、サブドメインも保護されていることを確認してください。
-
ステップ4: max-age値を増やす
HSTS 実装が短い max-age で正しく動作することを確認したら、31536000 年 (max-age=XNUMX) などのより長い期間に増やすことができます。
アパッチ
ヘッダ 常にStrict-Transport-Securityを設定する 「max-age=31536000; includeSubDomains; プリロード」
nginx
ヘッダーを追加 厳格な輸送セキュリティ 「max-age=31536000; includeSubDomains; プリロード」 いつも;
IIS
<システム.webServer>
<httpプロトコル>
<カスタムヘッダー>
<加えます 名=「厳格な輸送セキュリティ」 値=「max-age=31536000; includeSubDomains; プリロード」/>
</カスタムヘッダー>
</httpプロトコル>
</システム.webServer>
ステップ5: HSTSプリロードを検討する
HSTS プリロードは、ブラウザにハードコードされている HSTS 対応サイトのリストにドメインを含めることで、セキュリティをさらに強化します。サイトをプリロードするには:
- HSTSヘッダーに以下が含まれていることを確認してください
preload
指令の中で。 - HSTS プリロード リスト送信 Web サイトにアクセスしてください。
- ドメインを入力し、送信プロセスに従ってください。
注意: プリロードは強力な保護手段ですが、元に戻すのが難しい場合があります。送信する前に、サイトが長期的な HTTPS のみのアクセスに対応できる状態であることを確認してください。
ベストプラクティスと考慮事項
- 短い最大年齢から始める: 最初は低い値 (例: max-age=300) から始めて、すべてが正しく機能することを確認しながら徐々に値を増やしていきます。これにより、設定ミスがあった場合にユーザーがロックアウトされることがなくなります。
- includeSubDomainsには注意が必要: このオプションを使用する前に、すべてのサブドメインが HTTPS に対応していることを確認してください。
- 長期的な計画を立てる: HSTS を実装すると、HTTP に戻すのが難しくなる可能性があります。組織が HTTPS を維持することにコミットしていることを確認してください。
- 定期モニタリング: HTTPS 構成を継続的に監視し、証明書が有効であり、適切に構成されていることを確認します。
- ユーザー教育: HSTS は多くの部分を自動的に処理しますが、HTTPS の重要性とセキュリティ警告の監視についてユーザーに説明してください。
潜在的な課題と解決策
混合コンテンツの問題
- 課題: 一部のリソースはまだ HTTP 経由で読み込まれています。
- ソリューション: コンテンツ セキュリティ ポリシー (CSP) ヘッダーを使用して、混合コンテンツを検出し、報告します。
証明書の有効期限
- 課題: 厳格な HSTS ポリシーにより、期限切れの証明書によってユーザーがロックアウトされる可能性があります。
- ソリューション: 自動証明書更新および監視システムを実装します。
リバースプロキシの複雑さ
- 課題: HSTS ヘッダーは、一部のリバース プロキシ設定では正しく伝播されない可能性があります。
- ソリューション: リバース プロキシが HSTS ヘッダーを正しく渡すか設定するように構成されていることを確認します。
開発およびテスト環境
- 課題: HSTS により、HTTPS 以外の開発環境へのアクセスが複雑になる可能性があります。
- ソリューション: 開発/ステージングには、HSTS が有効になっていない別のドメインを使用します。
まとめ
HTTP Strict Transport Security (HSTS) は強力なツールです。HSTS は安全な接続を強制することで、Web サイトとそのユーザーをさまざまな攻撃から保護します。実装には慎重な計画と実行が必要ですが、セキュリティ上のメリットは初期設定の複雑さをはるかに上回ります。
ウェブ セキュリティは継続的なプロセスであることを忘れないでください。HSTS ポリシーを定期的に確認して更新し、HTTPS の実装を監視し、新しいウェブ セキュリティのベスト プラクティスについて最新情報を入手して、Web サイトとユーザーを安全に保ちます。