Missing Anti-clickjacking Header

「Missing Anti-clickjacking Header」というアラートは、クリックジャッキング攻撃対策として必要なヘッダーが設定されていないことを示しています。このアラートを解消するためには、適切なHTTPヘッダーを追加する必要があります。特に、X-Frame-Options または Content-Security-Policy ヘッダーを設定することが推奨されます。

1. X-Frame-Options ヘッダーの追加

X-Frame-Options ヘッダーは、ページが <iframe><frame> で表示されることを制御するためのヘッダーです。以下のいずれかを設定することで、クリックジャッキング攻撃を防ぐことができます。

  • DENY: どのページにも埋め込まれないようにする。
  • SAMEORIGIN: 同一オリジンのページにのみ埋め込むことを許可する。

Apache の場合

<IfModule mod_headers.c>
    Header always set X-Frame-Options "SAMEORIGIN"
</IfModule>

Nginx の場合

add_header X-Frame-Options "SAMEORIGIN";

PHP の場合

header('X-Frame-Options: SAMEORIGIN');

2. Content-Security-Policy ヘッダーの追加

Content-Security-Policy (CSP) ヘッダーの frame-ancestors ディレクティブを使用して、どのサイトがページを埋め込むことができるかを指定することもできます。

Apache の場合

<IfModule mod_headers.c>
    Header always set Content-Security-Policy "frame-ancestors 'self'"
</IfModule>

Nginx の場合

add_header Content-Security-Policy "frame-ancestors 'self'";

PHP の場合

header("Content-Security-Policy: frame-ancestors 'self'");

3. WordPressでの設定

WordPressサイトにこれらのヘッダーを追加する方法はいくつかあります。テーマの functions.php ファイルにコードを追加するか、セキュリティプラグインを利用する方法があります。

functions.php にコードを追加

以下のコードを functions.php に追加することで、ヘッダーを設定できます。

function add_security_headers() {
    header('X-Frame-Options: SAMEORIGIN');
    header("Content-Security-Policy: frame-ancestors 'self'");
}
add_action('send_headers', 'add_security_headers');

セキュリティプラグインの利用

WordPressのセキュリティプラグインを利用して、ヘッダーを簡単に設定できます。以下は推奨されるプラグインの一例です。

  • iThemes Security: ヘッダーの設定を含む多くのセキュリティ機能を提供します。
  • Wordfence Security: 全体的なセキュリティ強化をサポートするプラグインです。

まとめ

クリックジャッキング攻撃を防ぐために、X-Frame-Options または Content-Security-Policy ヘッダーを設定することが重要です。ApacheやNginxの設定ファイル、PHPコード、またはWordPressのテーマファイルやセキュリティプラグインを使用してこれらのヘッダーを追加することができます。これにより、OWASP ZAPで報告された「Missing Anti-clickjacking Header」アラートを解消することができます。