CSP响应头生成器

可视化构建 Content-Security-Policy 响应头,勾选常见指令(default-src/script-src/style-src等)和来源关键字或输入自定义域名,一键生成CSP字符串,并对高风险配置给出提示。

免费在线工具
Loading…

使用说明

逐个勾选要配置的指令(default-src、script-src、style-src、img-src、connect-src、font-src、frame-src、object-src、base-uri、form-action),每个指令展开后可以勾选常见来源关键字('self'、'none'、'unsafe-inline'、'unsafe-eval'、https:、data:),也可以在下方输入框手动填写自定义来源域名(用空格或逗号分隔多个,如 https://cdn.example.com https://api.example.com)。

填好后点击“生成 CSP Header”,下方会输出完整的CSP字符串(各指令用分号连接),这个字符串可以直接作为HTTP响应头 Content-Security-Policy 的值,也可以用在 <meta http-equiv="Content-Security-Policy" content="..."> 标签里。如果勾选了 'unsafe-inline'/'unsafe-eval' 或者把 'none' 和其他来源混用,下方会显示风险提示。点击“加载示例配置”查看一个覆盖多个指令的典型配置示例。

功能介绍

Content-Security-Policy(CSP)是浏览器支持的一种安全机制,通过HTTP响应头声明页面允许加载哪些来源的脚本、样式、图片等资源,是防御XSS等注入类攻击的重要防线。手写CSP字符串容易出现指令拼写错误、来源关键字遗漏引号(如 self 而非 'self')等问题,配置不当要么起不到防护作用,要么导致页面正常资源被误拦截。

本工具提供表单化的CSP构建方式:每个支持的指令都可以勾选常见的关键字来源,或者填写自定义域名,避免手写字符串时的格式错误。生成结果的同时,工具会对几种典型的高风险配置给出提示——比如勾选了 'unsafe-inline' 会削弱对内联脚本/样式的XSS防护,'unsafe-eval' 允许动态代码执行存在风险,'none' 如果和其他来源混用实际效果会被'none'覆盖(其他来源被忽略)从而产生误导性配置。

本工具只做纯前端的指令拼装和格式规范化,不会验证你填写的自定义域名是否真实可访问,也不会自动判断该策略是否满足你项目的实际资源加载需求,生成后建议结合浏览器开发者工具的控制台报错做实际验证和调整。

使用场景

为新项目从零搭建CSP策略
梳理项目实际使用的脚本/样式/图片/接口来源,通过表单勾选快速拼装出一份基础的CSP响应头配置,替代容易出错的手写方式。
排查CSP相关的资源加载失败问题
对照浏览器控制台报出的CSP violation信息,回到表单里检查对应指令是否遗漏了需要的来源,重新生成正确的策略。
安全加固审查现有CSP配置
把线上已有的CSP字符串对照本工具的指令列表逐项勾选复现,检查是否存在'unsafe-inline'/'unsafe-eval'等高风险配置项,评估是否可以收紧。
学习CSP指令与来源关键字的语法规则
通过表单勾选和实时生成的字符串对照,直观理解各指令的作用范围和'self'/'none'等关键字的确切写法(必须带单引号)。

常见问题

生成的CSP字符串可以直接用吗?
生成的字符串符合CSP语法规范,可以直接作为Content-Security-Policy响应头的值使用。但CSP策略是否合适取决于你的实际页面资源加载情况(用了哪些CDN、是否有内联脚本等),建议部署后打开浏览器开发者工具控制台,观察是否有CSP拦截报错,再针对性调整。
为什么勾选'unsafe-inline'会有警告?
'unsafe-inline'允许执行内联的<script>标签内容或style属性,这正是很多XSS攻击利用的入口。CSP的核心价值之一就是禁止内联脚本执行,如果勾选了'unsafe-inline'会显著削弱这层防护,更安全的做法是用nonce(每次请求生成随机数并在标签和CSP里保持一致)或hash(对内联脚本内容计算哈希并加入CSP)的方式替代。
'none'和其他来源同时勾选会怎样?
按CSP语法,'none'表示禁止该指令的所有来源,如果同时勾选了'none'和其他来源(如'self'),浏览器实际会按'none'生效,忽略其他来源,达不到你可能期望的“既允许self又禁止其他”的效果。工具检测到这种情况会给出提示,建议单独使用'none'或者去掉'none'只保留具体来源。
工具会检查我填的自定义域名是否正确吗?
只做非常基础的格式检查(比如是否意外包含空格),不会验证域名是否真实存在、是否可访问、是否确实提供了对应资源。域名的正确性和可用性需要你自行确认。