Strict Transport Security Header Not Set

「Strict-Transport-Security Header Not Set」というアラートは、HTTP Strict Transport Security (HSTS) ヘッダーが設定されていないことを示しています。HSTSヘッダーは、ウェブサイトがHTTPSを強制するための重要なセキュリティ機能です。このヘッダーが設定されていないと、ユーザーがHTTPを介してサイトにアクセスする可能性があり、中間者攻撃(MITM)を受けるリスクが高まります。

HSTSの設定方法

1. .htaccessファイルの編集 (Apache)

Apacheサーバーを使用している場合、.htaccessファイルに以下の行を追加してHSTSを有効にします。

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
  • max-age: HSTSポリシーが有効である期間(秒単位)。上記の例では1年間(31536000秒)。
  • includeSubDomains: サブドメインにもHSTSを適用。
  • preload: サイトをHSTSプリロードリストに追加するための指示。プリロードリストに追加するには、別途HSTS Preloadに登録が必要です。

2. Nginxの設定

Nginxサーバーを使用している場合、Nginxの設定ファイルに以下の行を追加します。

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

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

3. WordPressプラグインの利用

HSTSを設定するために、WordPressプラグインを利用することもできます。以下のプラグインは簡単にHSTSを設定するのに役立ちます。

  • HTTP Headers: このプラグインを使用すると、サイトのHTTPヘッダーを簡単に管理できます。HSTSヘッダーも設定できます。

    // プラグインの設定画面で以下のヘッダーを追加
    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    
  • Really Simple SSL: このプラグインは、サイト全体をHTTPSに変換し、HSTSヘッダーを自動的に追加するオプションも提供します。

4. カスタムコードの追加

WordPressテーマのfunctions.phpファイルにカスタムコードを追加して、HSTSヘッダーを設定することもできます。

add_action('send_headers', 'add_hsts_header');
function add_hsts_header() {
    header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
}

まとめ

HSTSヘッダーを設定することで、ユーザーがHTTP経由でアクセスすることを防ぎ、セキュリティを強化できます。ApacheやNginxの設定ファイルを編集するか、WordPressプラグインを利用して簡単にHSTSを有効にすることができます。これにより、OWASP ZAPで検出された「Strict-Transport-Security Header Not Set」アラートを解消し、サイトのセキュリティを向上させることができます。