语言
English English Vietnamese (Tiếng Việt) Vietnamese (Tiếng Việt) Chinese (简体中文) Chinese (简体中文) Portuguese (Brazil) (Português do Brasil) Portuguese (Brazil) (Português do Brasil) Spanish (Español) Spanish (Español) Indonesian (Bahasa Indonesia) Indonesian (Bahasa Indonesia)
CSP 头部生成器

CSP 头部生成器

使用指令构建器、预设模板和多种输出格式(支持 Apache、Nginx 等)来可视化构建 Content-Security-Policy 头部。

什么是 Content-Security-Policy?

Content-Security-Policy (CSP) 是一个 HTTP 响应头,可帮助防止跨站脚本 (XSS)、点击劫持和其他代码注入攻击。它通过指定允许在网页上加载哪些内容源来工作。

没有 CSP

易受攻击的状态

  • 浏览器从任何来源加载资源
  • 网站容易受到恶意脚本注入
  • 无法控制内容源
  • XSS 攻击风险更高
使用 CSP

受保护的状态

  • 严格控制允许的域名
  • 自动阻止未授权的脚本
  • 细粒度的资源权限
  • 深度防御安全层

为什么使用 CSP 头部?

XSS 防护

阻止未授权的脚本在您的页面上执行,防止攻击者通过漏洞注入恶意代码。

数据盗窃防护

控制您的页面可以通过 fetch、XHR 或 WebSocket 连接向何处发送数据,防止数据外泄。

点击劫持防御

使用 frame-ancestors 指令防止您的网站被嵌入到恶意 iframe 中进行点击劫持攻击。

混合内容防护

使用 upgrade-insecure-requests 强制所有资源使用 HTTPS,消除混合内容漏洞。

此工具如何帮助您

手动编写 CSP 头部容易出错,需要记住指令名称和源语法。这个可视化构建器让您切换指令、点击源值,并立即看到生成的头部,格式可以是原始 HTTP、Apache、Nginx 或 PHP。

节省时间的优势:在几分钟内配置复杂的安全策略,而不是几小时,内置实时验证和格式转换。

如何使用 CSP 头部生成器

1

选择起点

选择一个预设模板来开始使用常见配置,或选择空白从头开始构建。可用的预设包括严格、基础网站、SPA + API、WordPress、电商和 CDN 密集型配置。

2

配置指令

通过点击复选框或头部行来切换指令的开启或关闭。启用指令后,您可以:

  • 点击快速源按钮('self'、'none'、'unsafe-inline' 等)来添加常见值
  • 输入自定义域名(例如 cdn.example.com、*.googleapis.com)并点击添加
  • 再次点击源按钮来移除
  • 点击自定义域名标签上的× 按钮来移除它们
3

查看警告

该工具会自动分析您的策略并显示安全警告。红色警告表示重大安全风险,黄色警告建议改进,蓝色通知提供有用信息。

4

选择输出格式

选择与您的网络服务器匹配的输出格式:

  • 原始 - 纯 HTTP 头部值
  • Apache - 用于 .htaccess 或 Apache 配置文件
  • Nginx - 用于 nginx.conf 服务器块
  • Meta 标签 - 用于 HTML <meta> 标签(注意:不支持 Report-Only)
  • PHP - 用于 PHP header() 函数调用
5

复制并部署

点击复制按钮将生成的头部复制到您的剪贴板。考虑先启用Report-Only 模式来测试您的策略,而不阻止任何资源。

最佳实践:在生产环境中强制执行策略前,始终先使用 Report-Only 模式进行测试,以识别潜在问题而不破坏功能。

功能

可视化指令构建器

每个 CSP 指令都显示为带有切换开关的交互式行。启用指令以显示其源配置面板,其中包含快速添加按钮和自定义域名输入。指令分为四个类别:获取、文档、导航和其他。

script-src 'self' 'unsafe-inline' 切换指令开启/关闭 • 点击快速添加按钮 • 添加自定义域名
带有切换开关和快速添加源按钮的交互式指令构建器

16 个支持的指令

获取指令

控制可以从何处加载不同类型的资源:

  • default-src - 所有获取指令的后备
  • script-src - JavaScript 源
  • style-src - CSS 样式表
  • img-src - 图像和网站图标
  • connect-src - Fetch、XHR、WebSocket 连接
  • font-src - 网络字体
  • object-src - 插件(Flash、Java 小程序)
  • media-src - 音频和视频
  • frame-src - 嵌套浏览上下文(iframe)
  • worker-src - Web Worker 和 Service Worker
  • manifest-src - Web 应用清单

文档和导航指令

控制文档行为和导航:

  • base-uri - 限制可以出现在 <base> 元素中的 URL
  • form-action - 表单提交的有效端点
  • frame-ancestors - 可能嵌入此页面的有效父级(点击劫持防护)
重要:frame-ancestors 无法通过 meta 标签设置 — 它需要 HTTP 头部。

其他指令

其他安全增强功能:

  • upgrade-insecure-requests - 自动将 HTTP 升级到 HTTPS
  • block-all-mixed-content - 阻止所有混合内容(已弃用,使用 upgrade-insecure-requests)
  • report-uri - 发送违规报告的端点(已弃用,使用 report-to)

预设模板

严格

最大安全配置,允许的源最少。最适合高安全性应用程序。

基础网站

适用于具有自托管资源和常见 CDN 的标准网站的平衡策略。

SPA + API

针对具有 API 后端和动态模块加载的单页应用程序进行了优化。

WordPress

为 WordPress 网站预配置,具有常见的插件和主题要求。

电商

包括 Stripe、PayPal 和支付网关集成,用于在线商店。

CDN 密集型

为使用 Google Analytics、字体和多个 CDN 提供商的网站配置。

智能源管理

该工具自动处理源值逻辑以防止配置错误:

互斥性

选择 'none' 会自动清除所有其他源,因为它们是互斥的。

自动替换

当 'none' 处于活动状态时添加任何源会自动先移除 'none'。

重复防护

自动检测并防止添加重复的源。

安全分析

实时警告会提醒您 CSP 配置中的潜在安全问题:

严重警告:在 script-src 中使用 'unsafe-inline' 或 'unsafe-eval' 会显著削弱 XSS 防护。
安全建议:缺少 object-src 或 base-uri 指令可能会留下漏洞。
最佳实践说明:通配符使用(例如 https://*)会通过允许所有域名来削弱 CSP 防护。

多种输出格式

格式 用例 Report-Only 支持
原始 HTTP 任何服务器的纯头部值
Apache .htaccess 或 httpd.conf 文件
Nginx nginx.conf 服务器块
Meta 标签 HTML <meta> 元素
PHP PHP header() 函数
Meta 标签限制:当使用 Meta 标签格式且 Report-Only 模式处于活动状态时,会显示一条说明,因为 meta 标签无法使用 Content-Security-Policy-Report-Only。

您的数据保持私密

所有处理都在您的浏览器中进行,零服务器通信:

无服务器请求

您的策略配置永远不会离开您的设备。所有生成和验证都在本地使用 JavaScript 进行。

无跟踪

我们不收集或存储任何使用数据、配置详情或关于您的 CSP 策略的分析。

常见问题

Content-Security-Policy 和 Content-Security-Policy-Report-Only 有什么区别?

Content-Security-Policy 强制执行策略并阻止违反它的资源。Content-Security-Policy-Report-Only 仅报告违规而不阻止任何内容。

推荐工作流:先使用 Report-Only 模式测试您的策略并识别问题,然后再在生产环境中强制执行。

这种两阶段方法可以防止意外破坏功能,同时允许您监控违规报告并安全地完善您的策略。

为什么我应该始终包含 object-src 'none'?

object-src 指令控制 Flash 和 Java 小程序等插件。这些插件可以执行任意代码并绕过其他 CSP 防护。

object-src 设置为 'none' 会阻止所有插件内容,这是推荐的做法,因为:

  • 现代网站很少需要插件
  • Flash 和 Java 小程序已弃用且不安全
  • 插件可以绕过 CSP script-src 限制
  • 大多数浏览器正在逐步淘汰插件支持

'unsafe-inline' 真的那么危险吗?

是的。当您在 'unsafe-inline' 中允许 script-src 时,您页面上的任何内联脚本都可以执行 — 包括攻击者通过 XSS 漏洞注入的脚本。这会显著削弱 CSP 防护。

使用 'unsafe-inline'

易受攻击

  • 所有内联脚本执行
  • 注入的脚本自由运行
  • XSS 防护削弱
使用 nonce/哈希

受保护

  • 仅白名单脚本运行
  • 注入的脚本被阻止
  • 强大的 XSS 防护

更好的替代方案:使用 nonce 或哈希代替,它们允许特定的内联脚本,同时阻止注入的脚本。

default-src 有什么作用?

default-src 充当所有未明确设置的获取指令的后备。例如,如果您设置了 default-src 'self' 但未设置 img-src,图像将仅从您自己的域加载。

关键原则:您明确设置的任何指令都会覆盖该资源类型的 default-src。

示例:

具有 default-src 后备的 CSP
Content-Security-Policy: 
  default-src 'self';
  script-src 'self' cdn.example.com;
  img-src *;

/* Result:
 * - Scripts: 'self' + cdn.example.com (explicit)
 * - Images: * (explicit)
 * - Styles: 'self' (falls back to default-src)
 * - Fonts: 'self' (falls back to default-src)
 */

我可以对所有 CSP 功能使用 meta 标签格式吗?

不可以。HTML meta 标签方法有重大限制:

  • 无法使用 Report-Only 模式
  • 无法设置 frame-ancestors 指令
  • 无法使用 report-uri 或 report-to
  • 无法使用 sandbox 指令
建议:为了获得完整的 CSP 功能,请使用在您的网络服务器(Apache、Nginx 等)上配置的 HTTP 头部。

Meta 标签对于快速测试或当您无法访问服务器配置时很有用,但 HTTP 头部提供完整的 CSP 功能。

'strict-dynamic' 是什么,我何时应该使用它?

'strict-dynamic' 告诉浏览器信任由已信任脚本加载的脚本。这对于动态加载 JavaScript 模块的现代应用程序很有用。

优势

简化动态应用的 CSP

  • 适用于模块打包器
  • 支持动态导入
  • 减少策略复杂性

工作原理

信任传播模型

  • 忽略基于主机的允许列表
  • 适用于基于 nonce 的策略
  • 脚本加载其他受信任的脚本

最适合:单页应用程序 (SPA)、React/Vue/Angular 应用程序以及使用 Webpack 或类似打包器的网站。

可视化构建 Content-Security-Policy 头。启用指令,添加源,并复制生成的头用于您的 Web 服务器。

输出

        
预设模板开始,然后根据您的具体需求进行自定义
启用Report-Only 模式来在强制执行前测试您的策略
始终包含object-src 'none' 以防止基于插件的攻击
添加base-uri 'self' 以防止 base 标签注入
在可能的情况下,避免在 script-src 中使用'unsafe-inline''unsafe-eval'
所有处理都在您的浏览器中进行 - 不会向任何服务器发送数据
想了解更多? 阅读文档 →
1/7
找不到?用AI自定义工具
开始输入以搜索...
搜索中...
未找到结果
请尝试使用不同的关键词搜索