整合內容安全政策

內容安全政策 (CSP) 是一種保護 限制您網頁可載入的資源和指令碼 此程序的第一步 是將程式碼簽入執行所有單元只要在以下位置設定 Content-Security-Policy 標頭,即可啟用 CSP: 網路伺服器發出的 HTTP 回應。

設定 CSP 的標準方式有兩種:

  1. 指定可在網頁上插入資源的網域許可清單。

  2. 指定隨機 Nonce,其中必須標記網頁上的資源 載入物件。此方法稱為嚴格 CSP

因為 Google 發布商廣告代碼 (GPT) 使用的網域已有 我們僅支援嚴格的 CSP (選項 2)。這個做法讓您不需要 持續更新清單,持續更新可能過時並損壞網域 網站。

透過 GPT 設定 CSP

  1. 在網路伺服器上啟用 CSP。

    按照採用嚴格 CSP 所述步驟操作, 設定 CSP 標頭,並將 Nonce 套用至網頁中的每個指令碼標記。 包括 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/
    

    您也可以視用途選取更寬鬆的政策。更多內容 限制性政策可能隨時違反規定,恕不另行通知。

  2. 啟用跨網域顯示功能。

    廣告 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-Report-Only 標頭而非 Content-Security-Policy。標題會回報違規行為,但仍允許 之間的不同