コンテンツ セキュリティ ポリシー(CSP)は、読み込みと実行が許可されるリソースとスクリプトを制限することで、ウェブページを保護する手段です。CSP を有効にするには、ウェブサーバーからの HTTP レスポンスで Content-Security-Policy
ヘッダーを設定します。
CSP を構成する標準的な方法は 2 つあります。
Google パブリッシャー タグ(GPT)が使用するドメインは時間の経過とともに変化するため、厳格な CSP(オプション 2)のみがサポートされています。このアプローチでは、古くなってサイトを損なう可能性があるドメインのローリング リストを維持する必要がなくなります。
GPT で CSP を設定する
ウェブサーバーで CSP を有効にします。
厳格な CSP の導入で説明されている手順に沿って、CSP ヘッダーを設定し、
gpt.js
を含むページ上のすべてのスクリプトタグにノンスを適用します。GPT は、特に次の CSP ディレクティブをサポートしています。Content-Security-Policy: object-src 'none'; script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; base-uri 'none'; report-uri https://your-report-collector.example.com/
ユースケースに適している場合は、より寛容なポリシーを選択できます。より制限の厳しいポリシーが予告なく適用される場合があります。
クロスドメイン レンダリングを有効にします。
広告 iframe は、CSP で許可されていない外部リソースを読み込む可能性があります。同じドメインの iframe は最上位ウィンドウの CSP を継承し、GPT はクリエイティブのコンテンツを制御できないため、通常、同じドメインのクリエイティブは CSP ヘッダーで適切に機能しません。
すべてのクリエイティブでクロスドメイン レンダリングを有効にするには、広告スロットを読み込む前に
googletag.pubads().setForceSafeFrame(true)
を実行します。<!doctype html> <html> <head> <meta charset="utf-8"> <title>Hello GPT</title> <script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" nonce="KC7tcz53FHqumKP1" async></script> <script nonce="KC7tcz53FHqumKP1"> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { googletag.pubads().setForceSafeFrame(true); }); </script> </head>
テスト
Content-Security-Policy
ではなく Content-Security-Policy-Report-Only
ヘッダーを設定して、ポリシーをテストすることをおすすめします。ヘッダーは違反を報告しますが、ページでの違反は許可されます。