什么是内容安全策略?
内容安全政策(CSP)是一项网络标准,它授予了网络开发人员额外的控制权,他们可决定允许客户端浏览器从何处加载资源或允许哪些其他网站与开发人员的网站进行交互。例如,使用此示例策略,开发人员可以指定允许从其自己的站点安全地加载任何内容类型,还可以从任何域加载图像,但仅允许从单独的经过验证的第三方域加载 JavaScript 库和脚本:
default-src 'self'; img-src *; script-src https://userscripts.example.com
为什么要使用内容安全策略?
通过正确配置的策略,您和用户可享有针对特定攻击的额外安全防护。通常,它可用于防止和/或减轻涉及内容/代码注入的攻击,例如跨站点脚本/XSS攻击、需要嵌入恶意资源的攻击、涉及恶意使用 iframe 的攻击(例如点击劫持攻击)等。更常见的情况下,通过它您可以控制访问您的站点的客户端中显示的内容从何处加载。
如何编写策略?
可在以下地址查看示例中使用的案例和策略:https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy
http://w3c.github.io/webappsec-csp/ 和 https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives 提供了更完整的指令和使用说明,以及实施注意事项和客户端支持信息。
https://developer.chrome.com/extensions/contentSecurityPolicy 和 https://developer.chrome.com/apps/contentSecurityPolicy 提供了 Chrome 专用的文档,但更侧重于扩展/应用开发。
https://msdn.microsoft.com/en-us/library/dn904195%28v=vs.85%29.aspx 提供了针对 Edge 的部分文档。
我能够在 Cloudflare 中使用内容安全策略 (CSP) 吗?如何使用?
是的,您可以在 Cloudflare 背后的站点使用内容安全策略。我们不会修改您的源站发送的 Content-Security-Policy 标头。
针对您自己/其他第三方内容,无需对可接受来源进行更改。使用 Cloudflare 不会影响或修改您用于包含内容的 URL,因此不会干扰客户端将策略中指定的位置与用于包含资源的位置进行匹配的能力。
将 CSP 标头与 Rocket Loader 结合使用的示例
script-src 'self' ajax.cloudflare.com;
将 CSP 标头与 Mirage 结合使用的示例
script-src 'self' ajax.cloudflare.com;
如果您使用 Cloudflare Apps 或 Scrape Shield,则需要在策略中允许内嵌脚本,因为当您启用这些功能时,我们会在您的域中包含脚本并添加一些内嵌代码。以下是您可以用于这些功能的 CSP 示例:
script-src 'self' 'unsafe-inline'