コンテンツにスキップ

Insecure HTTP Header Setting: HTTP Strict Transport Security (HSTS)

安全でないHTTPヘッダー設定: HTTP Strict Transport Security (HSTS)

概要

HTTP Strict Transport Security (HSTS) は、Webサーバーが準拠するユーザーエージェント(Webブラウザなど)に対し、安全な接続(HTTPS)のみを使用して通信を行うよう宣言するWebセキュリティポリシーメカニズムです。サーバーは、「Strict-Transport-Security」という名前のHTTP応答ヘッダーフィールドを介してHSTSポリシーをユーザーエージェントに伝達します。HSTSポリシーは、ユーザーエージェントがサーバーに安全な方法でのみアクセスする期間を指定します。

WebアプリケーションがユーザーエージェントにHSTSポリシーを発行すると、準拠するユーザーエージェントは次のように動作します。

  • Webアプリケーションを参照する安全でない(HTTP)リンクを自動的に安全な(HTTPS)リンクに変換します。(たとえば、サーバーにアクセスする前に http://example.com/some/page/ は https://example.com/some/page/ に変更されます。)
  • 接続のセキュリティが確保できない場合(サーバーのTLS証明書が自己署名である場合など)、ユーザーエージェントはエラーメッセージを表示し、ユーザーがWebアプリケーションにアクセスできないようにします。

推奨事項

HTTPリクエストをHTTPSにリダイレクトするようにWebサーバーを設定してください。

たとえばApacheの場合、httpd.confで変更を行う必要があります。その他の設定については、関連リンクのセクションを参照してください。

# モジュールをロードする
LoadModule headers_module modules/mod_headers.so

# すべてのHTTPをHTTPSにリダイレクトする (オプション)
<VirtualHost *:80>
       ServerAlias *
       RewriteEngine On
       RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

# HTTPS-ホスト-構成
<VirtualHost *:443>
      # HTTP Strict Transport Securityを使用して、クライアントに安全な接続のみを使用させる
      Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

      # さらなる構成はここに記述します
      [...]
</VirtualHost>

関連リンク

基準

  • OWASP_ASVS_L1:
    • V14_4_5
  • OWASP_ASVS_L2:
    • V14_4_5
  • OWASP_ASVS_L3:
    • V14_4_5
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_3_6
    • REQ_3_7
    • REQ_4_2
    • REQ_6_2
    • REQ_6_3
    • REQ_6_4
    • REQ_11_3
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213