HTTP Strict Transport Security (HSTS) とは? 〜 Webサイトのセキュリティを強化する仕組み 〜

2024-05-25

HTTP Strict Transport Security (HSTS) とは?

HSTS は、以下の 2 つの主要な機能を提供します。

  • HTTPS 接続の強制: ブラウザがウェブサイトにアクセスする際、常に HTTPS 接続を使用するように指示します。たとえユーザーが HTTP アドレスを入力しても、ブラウザは自動的に HTTPS アドレスにリダイレクトします。
  • 中間者攻撃の防止: 中間者が HTTP 接続に介入し、通信内容を盗聴したり改ざんしたりすることを防ぎます。

HSTS は、以下のような場合に特に有効です。

  • ユーザーの個人情報や機密情報を取り扱うウェブサイト
  • オンラインバンキングやオンラインショッピングなどの金融取引を行うウェブサイト
  • ログイン機能やパスワード認証機能を提供するウェブサイト

HSTS の設定方法

HSTS は、Webサーバーの設定を変更することで有効にすることができます。設定方法は、使用している Webサーバーによって異なりますが、一般的には以下の手順で行います。

  1. Webサーバーの設定ファイルを開きます。
  2. HSTS ヘッダーを追加します。 HSTS ヘッダーには、以下の情報を含める必要があります。
    • max-age ディレクティブ: HSTS ポリシーの有効期間を秒単位で指定します。
    • includeSubDomains ディレクティブ (オプション): サブドメインにも HSTS ポリシーを適用するかどうかを指定します。
    • preload ディレクティブ (オプション): ブラウザに HSTS ポリシーをプリロードするよう指示します。
  3. Webサーバーを再起動します。

HSTS の注意点

HSTS を設定する際には、以下の点に注意する必要があります。

  • 有効期限: HSTS ポリシーの有効期限は、十分な長さに設定する必要があります。一般的には、1 年以上を設定するのが推奨されます。
  • サブドメイン: HSTS ポリシーをサブドメインに適用する場合は、includeSubDomains ディレクティブを忘れずに設定する必要があります。
  • 既存のブックマーク: HSTS を有効にした後、既存のブックマークが HTTP アドレスで保存されている場合、ブラウザが正しく読み込めない可能性があります。ブックマークを HTTPS アドレスに変更する必要があります。

HSTS は、ウェブサイトのセキュリティを強化するための有効な手段です。HTTPS を利用しているウェブサイトであれば、HSTS を設定することを強く推奨します。



    HTTP Strict Transport Security (HSTS) のサンプルコード

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

    このコードは、以下のことを意味します。

    • max-age=31536000: この HSTS ポリシーは、1 年間 (31536000 秒) 有効です。
    • includeSubDomains: このポリシーは、サブドメインにも適用されます。
    • preload: このドメインは、HSTS Preload List に追加されます。

    以下のコードは、Nginx で HSTS を有効にする例です。

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

    留意事項

    • 上記のコードはあくまで例であり、使用する Webサーバーや環境によって変更が必要になる場合があります。
    • HSTS を設定する前に、必ずドキュメントを参照し、詳細な設定方法を確認してください。


    HSTS 設定のその他の方法

    CDN (Content Delivery Network) を利用する

    多くの CDN プロバイダは、HSTS を含む様々なセキュリティ機能を提供しています。CDN を利用している場合は、CDN の設定画面から HSTS を有効にすることができます。

    CMS (Content Management System) を利用する

    WordPress や Drupal などの CMS には、HSTS を有効にするためのプラグインが用意されている場合があります。CMS を利用している場合は、プラグインを利用して HSTS を簡単に設定することができます。

    レジストリ設定を利用する

    一部のオペレーティングシステムでは、レジストリ設定を変更することで HSTS を有効にすることができます。ただし、レジストリ設定を誤るとシステムに問題が発生する可能性があるため、この方法は上級者向けとなります。

    各方法の比較

    方法メリットデメリット
    Webサーバー設定柔軟性が高い設定が複雑
    CDN設定が簡単CDN サービスに依存する
    CMS プラグイン設定が簡単利用できるプラグインが限られる
    レジストリ設定詳細な設定が可能設定を誤るとシステムに問題が発生する可能性がある

    HSTS を設定する方法はいくつかありますが、Webサーバー設定が最も一般的で柔軟性が高い方法です。CDN や CMS を利用している場合は、これらのプラットフォームの設定を利用するのも良いでしょう。レジストリ設定は、上級者向けのオプションとなります。

      留意事項

      • 上記の情報は、2024年5月24日時点のものです。