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