内容安全政策 (CSP) 可通过限制允许加载和执行的资源和脚本来保障网页安全。您可以通过在网络服务器的 HTTP 响应中设置 Content-Security-Policy
标头来启用 CSP。
配置 CSP 的���准有两种:
由于 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 async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" nonce="KC7tcz53FHqumKP1"></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
)来测试您的政策。该标头会报告违规行为,但仍然允许在网页上显示此类内容。