Content-Security-Policy 请求头生成器
逐条指令地构建 Content-Security-Policy 请求头,带来源标签,并生成可直接复制的 meta、nginx 和 Apache 代码片段。一切都在你的浏览器中运行。
CSP 生成器完全在你的浏览器中运行。你为构建 Content-Security-Policy 而输入的指令、主机和方案绝不会离开你的设备,也不会上传到 ArrayKit。
打开 Cache-Control 请求头生成器
关于 CSP 生成器
CSP 生成器逐条指令地构建一个 Content-Security-Policy 请求头。通过点击像 'self'、'none'、'unsafe-inline'、data: 和 https: 这样的来源标签,或输入像 cdn.example.com 这样的自定义主机,来填入 default-src、script-src、style-src、img-src、connect-src、font-src、frame-src 等等。关键字来源会为你加上单引号,而主机和方案保持裸露,因此策略始终有效。空指令会被自动丢弃,一切都以规范顺序输出。切换「仅报告」开关,可在强制执行之前以监控模式测试策略,然后复制原始请求头、一个 HTML meta 标签,或可直接粘贴的 nginx 和 Apache 代码片段。它为在浏览器中加固站点、抵御 XSS 和点击劫持的开发者打造——你构建的策略绝不离开你的设备。
功能特性
- 为 default-src、script-src、style-src、img-src、connect-src、font-src、frame-src 等提供逐指令编辑器
- 一键来源标签:'self'、'none'、'unsafe-inline'、'unsafe-eval'、data:、https:、blob: 和 *
- 添加自定义主机和方案;关键字加单引号,主机保持裸露
- 仅报告开关会输出 Content-Security-Policy-Report-Only 以便在不阻止的情况下测试
- 指令以规范顺序排列,空指令会被自动丢弃
- 复制原始请求头、一个 HTML meta http-equiv 标签,或 nginx 和 Apache 的 add_header 代码片段
- 构建时会移除指令内部的重复来源
- 完全在你的浏览器中运行——你构建的策略绝不会被上传
如何使用 CSP 生成器
- 点击来源标签或输入一个主机,为你需要的每条指令添加来源
- 把你不需要的指令留空——它们会从输出中被丢弃
- 如果想在强制执行前监控违规,切换「仅报告」
- 复制 Content-Security-Policy 请求头值,或 meta、nginx 或 Apache 代码片段
示例
输入
default-src: 'self'
script-src: 'self' https:
img-src: 'self' data:
object-src: 'none'
输出
Content-Security-Policy: default-src 'self'; script-src 'self' https:; img-src 'self' data:; object-src 'none'
像 'self' 这样的关键字会被加引号;像 https: 和 data: 这样的方案保持裸露。
常见错误与故障排除
- 添加策略后浏览器报告 'Refused to load'(拒绝加载)错误。 — 那种资源类型缺少一个来源。把该主机或方案添加到匹配的指令(或作为回退添加到 default-src),然后重新构建请求头。
- 策略上线后内联脚本或样式停止工作。 — CSP 会阻止内联代码,除非你允许它。把 'unsafe-inline' 添加到 script-src 或 style-src,或者更好,改用 nonce 或 hash 来源令牌。
- meta 标签版本被忽略,而响应请求头却生效。 — 某些指令如 frame-ancestors、report-uri 和 sandbox 只能作为真正的 HTTP 请求头生效,而不能在 <meta> 标签中。对这些请优先使用请求头代码片段。
- 仅报告模式在阻止请求,而不是只记录它们。 — 检查请求头名称。强制执行使用 Content-Security-Policy;监控使用 Content-Security-Policy-Report-Only。开关会为你切换名称。
常见问题
- 这个 CSP 生成器会产生什么?
- 它根据你选择的指令和来源构建一个完整的 Content-Security-Policy 请求头值,然后给你原始请求头、一个 HTML meta 标签,以及可粘贴进你配置的 nginx 和 Apache add_header 代码片段。
- 哪些 CSP 来源会加单引号,哪些不会?
- 关键字来源如 'self'、'none'、'unsafe-inline'、'unsafe-eval' 和 'strict-dynamic',以及 nonce 和 hash,都会加单引号。像 https:、data: 和 cdn.example.com 这样的主机和方案保持裸露。工具会为你正确地加引号。
- 仅报告开关有什么用?
- 它把请求头名称切换为 Content-Security-Policy-Report-Only,该请求头会报告违规而不阻止任何东西。用它在实时站点上试运行一个新策略,并在强制执行前观察控制台。
- 我可以把整个策略作为一个 CSP meta 标签来投放吗?
- 多数情况下可以——工具会为强制执行的策略输出一个 <meta http-equiv> 标签。但 frame-ancestors、report-uri、report-to 和 sandbox 在 meta 标签中会被忽略,因此当你的策略依赖它们时请使用 HTTP 请求头代码片段。
- 为什么请求头会略去我没有填写的指令?
- 没有来源的指令会被丢弃,以使输出保持整洁有效。default-src 会作为任何你留空的 fetch 指令的回退,因此你只需覆盖那些不同的指令。
- 构建 CSP 请求头会把我的主机发送到任何地方吗?
- 不会。CSP 生成器完全在你的浏览器中运行。你输入的指令和主机都留在你的设备上,绝不会上传到 ArrayKit。
相关工具
全部 ArrayKit 工具