ワードプレスでContent-Security-Policy(CSP)を設定し外部読み込みの不正なJAVASCRIPTの実行をさせないようにする方法を解説いたします。

Content-Security-Policy とは?

Content-Security-Policyとは、ページのデータの通信ヘッダーにJAVASCRIPTやフォント読み込み、Iframeの実行などの条件を指定するためのものです。

この指定をブラウザーが読み取り、その設定に従い外部のJAVASCRIPTの実行などをしてくれるため、マルウェアに感染したサイトのJAVASCRIPTをユーザーが実行せずに済む防波堤のような役割になります。

ワードプレスで、Content-Security-Policyで適切な値を設定している場合、万が一サイトがマルウェアにサイトが感染したり、その他の脆弱性でユーザーがページ上で不正なJAVASCRIPTなどを実行されそうになっても防ぐことができ、ユーザーの被害を最小限にすることが可能です。

今回はContent-Security-Policyで不正な外部読み込みスクリプトを実行させない設定について解説します。

ワードプレスのヘッダーにContent-Security-Policyを埋め込む方法

下記のコードはワードプレスのヘッダー部にContent-Security-PolicyのJAVASCRIPTの実行の設定を出力するためのものです。テーマのfunctions.phpなどに書き込むと動作いたします。

WordPress function my_add_security_headers($headers) {
   
    $headers['Content-Security-Policy'] = "script-src 'self';"; 
    return $headers;
    
}
add_filter('wp_headers', 'my_add_security_headers',1,1);

‘wp_headers’フィルタで、ワードプレスのヘッダーの出力にContent-Security-Policyを追加できます。

“script-src ‘self’;” は最も厳しい設定で、自ドメイン上にある.jsファイルの読み込みのみを許可するという設定になります。

この設定ですと、多くのサイトでは、JAVASCRIPTの読み込みが限定されサイトの表示不全や機能不全が起こる可能性がありますので、必要に応じてこの設定を甘くしてきます。

script-src 'self' 'unsafe-inline' 'unsafe-eval';

とすると、インラインでのJAVASCRIPTとeval関数も許可します。

script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googletagmanager.com *.google-analytics.com *.googlesyndication.com *.gstatic.com *.google.com wordpress.com *.wp.com;

とすると、Googleタグマネージャ、Googleアナリティクス、その他のGoogleの広告や、Jetpack関連のワードプレス.comのJAVASCRIPT埋め込みも許可します。

多くの場合この設定で特に問題なくContent-Security-PolicyのJAVASCRIPT関連の設定は問題ないかと存じます。

※*はどのような文字列でも条件に合致するという意味になります

その他の外部アフェリエイトやアクセス解析スクリプトを使用している場合

この場合、その外部JAVASCRIPTを読み込むサイトのドメインをContent-Security-Policyのscript-src設定の末端に追加していく必要があります。

例 *.example.com

script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googletagmanager.com *.google-analytics.com *.googlesyndication.com *.gstatic.com *.google.com wordpress.com *.wp.com *.example.com;

サイトがマルウェア感染や、脆弱性を利用されるのを防ぐ

Content-Security-Policy はあくまでもユーザー側の防波堤となるもので、マルウェア感染を防いだり、マルウェアに感染している場合は、マルウェアの駆除を行ったり、サイトに脆弱性を発生させないことも運用側で重要となります。

マルウェア検査駆除、脆弱性検査、セキュリティー向上機能があるセキュリティー関連のプラグインもご利用いただくことをお勧めいたします。
【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]

WordPress ワードプレスのマルウェア駆除・セキュリティー向上のご依頼・ご相談はWPドクターまでお気軽にお送りください