CSP 生成器
从结构化的指令字段(default-src、script-src、style-src、img-src 等)构建 Content-Security-Policy 标头值,以及可直接粘贴的 HTML meta 标签。
输入
未明确设置的指令的回退源列表。
脚本可以从哪里加载。
样式表可以从哪里加载。
图像可以从哪里加载。
字体可以从哪里加载。
允许 fetch/XHR/WebSocket 连接的源。
嵌套浏览上下文(iframe)可以从哪里加载。
<object>/<embed>/<applet> 资源可以从哪里加载。
音频/视频源可以从哪里加载。
哪些父源可以在 frame 中嵌入此页面 — 点击劫持保护。
限制文档的 <base> 元素中可使用的 URL。
限制可用作 HTML 表单操作目标的 URL。
自动将页面的 HTTP 请求升级到 HTTPS。
输出
将此设置为 Content-Security-Policy 响应标头的值。
使用此工具的更多方式
REST API
curl -X POST https://api.iotools.cloud/v1/tool/csp-generator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"defaultSrc": "'self'",
"scriptSrc": "'self' https://cdn.example.com",
"styleSrc": "",
"imgSrc": "'self' data:",
"fontSrc": "",
"connectSrc": "",
"frameSrc": "",
"objectSrc": "",
"mediaSrc": "",
"frameAncestors": "",
"baseUri": "",
"formAction": "",
"upgradeInsecure": ""
}'替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。
让 AI 代理执行
Use the IOTools `csp-generator` tool (CSP Generator) on this input:
YOUR_INPUT_HERE将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。
嵌入式小组件
<iframe
src="https://iotools.cloud/embed/csp-generator/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="CSP 生成器 — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。
| 每次 API/MCP 调用费用 | 5 积分起 |
|---|---|
| 需要更多积分? | 查看定价 |
也可通过
使用指南
什么是 Content-Security-Policy?
Content-Security-Policy(CSP)是一个 HTTP 响应标头,它告诉浏览器页面允许加载的脚本、样式、图像、字体和其他资源的确切源。它是针对跨站脚本(XSS)最有效的浏览器端防御之一:即使攻击者设法通过注释字段或未清理的输入将 <script> 标签注入到您的页面中,编写良好的 CSP 也会阻止该脚本执行(或从一开始就阻止从攻击者域加载),因为它不匹配任何允许的源。CSP 还阻止点击劫持(通过 frame-ancestors)、限制 <base> 标签注入,并可以锁定表单允许提交到的位置。此工具从结构化的指令字段构建有效的 CSP 标头值,因此您不需要记忆语法或冒着打字错误的风险,这会悄悄地禁用策略。
如何使用
- 为要限制的每个指令填写源列表 — 例如,
default-src使用'self',或script-src使用'self' https://cdn.example.com。用空格分隔多个源。 - 将指令留空以从生成的标头中完全忽略它 — 忽略的指令只会回退到
default-src(除了frame-ancestors和base-uri,它们永远不会被继承,必须明确设置)。 - 启用 upgrade-insecure-requests 让浏览器自动将页面的 HTTP 子资源请求改写为 HTTPS。
- 将 Generated CSP Header Value 复制到您的
Content-Security-Policy响应标头中,或复制 Meta Tag 直接粘贴到页面的<head>中。
支持的指令
- default-src — 未明确设置的任何提取指令使用的回退源列表。
- script-src — 可以从哪里加载/执行 JavaScript。
- style-src — 可以从哪里加载 CSS。
- img-src — 可以从哪里加载图像。
- font-src — 可以从哪里加载网络字体。
- connect-src — 允许
fetch、XMLHttpRequest、WebSocket和 EventSource 连接的源。 - frame-src — 可以从哪里加载嵌套浏览上下文(
<iframe>)。 - object-src — 可以从哪里加载
<object>、<embed>和<applet>资源;建议使用'none',因为这些是遗留的插件 API。 - media-src — 可以从哪里加载
<audio>/<video>源。 - frame-ancestors — 允许在 frame 中嵌入此页面的父源;防止点击劫持的主要防御。
- base-uri — 限制文档的
<base>元素中可使用的 URL,防止 base-tag 注入攻击。 - form-action — 限制页面上 HTML
<form>可以提交到的 URL。
常见源值
'self'(同源)、'unsafe-inline'(允许内联 <script>/<style> — 削弱 XSS 保护,尽可能避免)、'unsafe-eval'(允许 eval() — 避免)、特定域(https://cdn.example.com)、方案(https:、data:)或 *(任何源 — 非常宽松)。
常见问题
为什么我的指令在输出中丢失了? 空指令完全被忽略 — 只有至少有一个源的指令才会包含在生成的标头中。
应该使用标头还是 meta 标签? HTTP Content-Security-Policy 标头是首选 — 它在解析任何 HTML 之前应用,并支持 <meta> 标签无法实施的指令(如 frame-ancestors 和 report-uri)。只有当您无法控制服务器响应标头时,才使用 meta 标签。
default-src 和单独设置每个指令有什么区别? default-src 是回退值:任何您留空的提取指令都会继承它。仅设置 default-src 'self' 是一个合理的最小基线,但显式指令为您提供了每个资源类型更精细的控制。
隐私
所有操作都在您的浏览器中进行 — 您输入的指令值永远不会发送到我们的服务器。