Content Security Policy (CSP) Header Not Set

OWASP ZAPで「Content Security Policy (CSP) Header Not Set」というアラートが報告された場合、これはサイトがCSPヘッダーを設定していないことを示しています。CSPヘッダーを設定することでクロスサイトスクリプティング(XSS)などの攻撃を防ぐことができます。以下に、CSPヘッダーを設定してこのアラートを解消するための手段を紹介します。

1. CSPとは?

Content Security Policy (CSP) は、ウェブページに読み込むことができるリソースの種類とソースを制御するセキュリティ機能です。これにより、スクリプトインジェクションやその他の攻撃を防ぐことができます。

2. CSPヘッダーの設定方法

2.1. functions.phpに追加

WordPressテーマの functions.php ファイルにCSPヘッダーを追加するコードを記述します。

function add_csp_header() {
    header("Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' https://trusted.cdn.com;");
}
add_action('send_headers', 'add_csp_header');

上記の例では、default-src'self' に設定し、スクリプトとスタイルシートのソースを信頼できるCDNに限定しています。

2.2. セキュリティプラグインの使用

WordPressのセキュリティプラグインを使用してCSPヘッダーを設定することもできます。以下のプラグインはCSPヘッダーの設定をサポートしています。

  • Wordfence Security
  • iThemes Security
  • HTTP Headers

これらのプラグインの設定画面で、CSPヘッダーを追加するオプションを探します。

2.3. .htaccessファイルの編集

Apacheを使用している場合、.htaccess ファイルに以下のコードを追加してCSPヘッダーを設定することができます。

<IfModule mod_headers.c>
    Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' https://trusted.cdn.com;"
</IfModule>

2.4. nginxの設定

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

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' https://trusted.cdn.com;";

3. CSPポリシーの設計

CSPポリシーを設定する際には、以下のディレクティブを考慮に入れます。

  • default-src: デフォルトのリソース読み込みソース
  • script-src: スクリプトの読み込みソース
  • style-src: スタイルシートの読み込みソース
  • img-src: 画像の読み込みソース
  • font-src: フォントの読み込みソース
  • connect-src: AJAXリクエストなどの接続先

4. CSPのテスト

設定後、サイトが正しく動作することを確認するために、CSPをテストします。CSPレポートURIを使用して、CSP違反が発生した場合にレポートを受け取ることができます。

function add_csp_header() {
    header("Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' https://trusted.cdn.com; report-uri /csp-report-endpoint;");
}
add_action('send_headers', 'add_csp_header');

また、ブラウザのデベロッパーツールを使用して、CSPヘッダーが正しく適用されていることを確認します。

5. OWASP ZAPで再スキャン

CSPヘッダーを設定した後、OWASP ZAPでサイトを再スキャンし、アラートが解消されたことを確認します。

これらの手順を実施することで、「Content Security Policy (CSP) Header Not Set」アラートを解消し、サイトのセキュリティを強化することができます