无需登录 数据私有 本地保存

内容安全策略生成器 - CSP HTTP头在线定制

65
0
0
0

使用前准备

在使用CSP生成器之前,您需要了解以下基础知识:

  • CSP的基本概念 — 内容安全策略通过白名单机制控制浏览器可以加载哪些资源,不符合策略的资源会被阻止
  • 部署方式 — CSP可通过两种方式部署:HTTP响应头(推荐)或HTML meta标签
  • 浏览器兼容性 — 主流浏览器(Chrome、Firefox、Edge、Safari)均支持CSP Level 2,IE不支持
  • 测试环境 — 建议先在开发或测试环境验证CSP配置,确认无误后再部署到生产环境

快速开始:5步生成CSP策略

步骤一:选择安全等级预设

打开工具页面,首先在顶部的预设模板区域选择适合您项目的安全等级:

  • 如果是新项目且安全要求高,点击「严格模式」作为起点
  • 如果是现有项目首次引入CSP,建议从「宽松模式」开始,逐步收紧
  • 如果需要测试但暂不生效,勾选「仅报告模式 (Report-Only)」

点击预设按钮后,下方指令配置面板会自动填充对应的默认值。

步骤二:配置布尔指令

在布尔指令区域,根据需求勾选以下选项:

  • upgrade-insecure-requests — 如果您的站点同时存在HTTP和HTTPS资源,建议勾选此项,自动将HTTP请求升级为HTTPS
  • block-all-mixed-content — 如果已全站启用HTTPS,勾选此项可阻止任何HTTP混合内容加载

注意:这两个指令可以同时启用,它们在安全防护上是互补关系。

步骤三:配置CSP指令

在指令配置区域,逐一设置各条CSP指令的允许来源:

  • default-src — 通常设置为'self',作为所有未指定指令的默认策略
  • script-src — 最关键的指令,控制脚本来源。如果需要使用内联脚本,考虑使用Nonce或hash而非'unsafe-inline'
  • style-src — 控制样式来源。如果使用内联样式,同样建议使用Nonce
  • img-src — 图片来源通常较宽松,可设置为*或包含CDN域名
  • connect-src — 根据项目API请求目标配置,如您的后端域名、第三方API等
  • frame-src — 如果页面嵌入了第三方iframe(如YouTube视频、支付页面),需在此列出域名
  • frame-ancestors — 防止点击劫持,通常设为'self'或列出允许嵌入的域名
  • base-uri — 强烈建议设为'self'或'none',防止URL劫持
  • form-action — 限制表单提交目标,通常设为'self'

未配置的指令不会出现在最终输出中,因此只配置您需要的指令即可。

步骤四:生成Nonce(可选)

如果您的页面需要使用内联脚本或样式,建议使用Nonce机制:

  1. 点击「生成Nonce」按钮,工具会生成一个安全的随机字符串
  2. 点击「添加到script-src」,自动将nonce值添加到script-src指令中
  3. 复制生成的Nonce值,在您的HTML脚本标签上添加nonce属性
  4. 重要:Nonce值每次请求应重新生成,确保安全性

步骤五:复制输出并部署

配置完成后,在实时预览区域查看输出结果:

  • HTTP响应头方式(推荐):复制Content-Security-Policy头值,配置到Web服务器中
  • Nginx示例:add_header Content-Security-Policy "策略内容" always;
  • Apache示例:Header set Content-Security-Policy "策略内容"
  • HTML Meta标签方式:复制meta标签,粘贴到HTML的head中

常见错误与排查

页面功能异常

如果部署CSP后页面出现功能异常(如脚本不执行、样式丢失),请打开浏览器开发者工具的Console面板,查看被CSP阻止的资源信息。根据报错中的具体指令进行调整。

调试建议

建议先使用Report-Only模式测试一段时间,确认没有误报后再切换为强制执行模式。同时配置report-uri将违规报告发送到日志系统,便于持续监控。

进阶技巧

  • 使用strict-dynamic — 配合Nonce使用,信任由已授权脚本动态创建的子脚本,减少对白名单的依赖
  • 分环境配置 — 开发环境使用宽松策略(允许localhost),生产环境使用严格策略
  • 渐进式收紧 — 从宽松模式起步,每次移除一条宽松规则,充分测试后再继续收紧
  • 监控违规报告 — 通过report-uri收集的违规数据,持续优化策略配置