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

CSP 违规报告模拟查看器 - 内容安全策略报告解析

10
0
0
0

CSP 违规报告解析器

粘贴内容安全策略(CSP)违规报告 JSON,快速解析并获取修复建议。支持 CSP Level 2 (report-uri) 和 Level 3 (report-to / Reporting API) 格式。

粘贴 CSP 违规报告 JSON 并点击"解析报告"

或点击上方模拟场景按钮快速体验

常见问题 (FAQ)

CSP(Content Security Policy,内容安全策略)是一种浏览器安全机制,通过 HTTP 响应头或 <meta> 标签定义白名单,限制页面可以加载和执行的资源来源。CSP 能有效防御 XSS(跨站脚本攻击)、数据注入、点击劫持等常见 Web 攻击。

示例策略:Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline';

CSP 违规报告(JSON 格式)通常包含以下关键字段:

  • document-uri — 发生违规的页面 URL
  • blocked-uri — 被策略阻止的资源 URL(inline/eval/data: 等特殊值)
  • violated-directive — 被违反的具体指令名称
  • effective-directive — 实际生效的指令
  • original-policy — 完整的原始 CSP 策略字符串
  • source-file / line-number / column-number — 违规代码的源文件和位置
  • script-sample — 被阻止的脚本样本(前40字符)
  • disposition — enforce(强制执行)或 report(仅报告)

report-uri(CSP Level 2,已废弃但仍广泛支持):直接在 CSP 策略中指定一个接收违规报告的 URL 端点。报告格式为包含 csp-report 字段的 JSON 对象。

report-to(CSP Level 3 / Reporting API):使用独立的 Report-To HTTP 响应头定义报告端点组,然后在 CSP 中通过 report-to 指令引用。报告格式遵循 Reporting API 规范(数组格式,包含 typebody 字段)。

本工具同时支持两种格式的解析。

当内联脚本(<script>...</script> 或事件处理器如 onclick)被 CSP 阻止时,有以下解决方案:

  1. 使用 nonce(随机数):在 CSP 中添加 'nonce-随机值',并在 <script nonce="随机值"> 中使用相同的随机数。每次请求需生成新的 nonce。
  2. 使用 hash(哈希值):计算内联脚本的 SHA-256/SHA-384/SHA-512 哈希值,在 CSP 中添加 'sha256-哈希值'
  3. 将脚本移到外部文件:这是最推荐的做法,将内联脚本提取到独立的 .js 文件中并允许其来源。
  4. 使用 'unsafe-inline'(不推荐):会削弱安全防护,仅在必要时作为临时方案。

最常见的 CSP 违规类型包括:

  • script-src 违规:内联脚本、eval() 调用、未授权的外部脚本被阻止 — 安全风险最高
  • style-src 违规:内联样式 <style>style="" 属性被阻止
  • img-src 违规:来自未授权来源的图片加载被阻止
  • font-src 违规:来自未授权来源的 Web 字体被阻止
  • connect-src 违规:XHR/Fetch/WebSocket 连接到未授权目标被阻止
  • frame-src 违规:iframe 嵌入未授权来源被阻止
  • media-src 违规:音频/视频资源被阻止

使用 Content-Security-Policy-Report-Only 响应头时,浏览器不会实际阻止违规资源,仅发送违规报告到指定端点。这允许开发者:

  • 安全测试:在不影响用户体验的情况下测试新策略
  • 收集数据:了解站点实际触发了哪些违规,以便调整策略
  • 逐步迁移:从宽松策略逐步过渡到严格策略
  • 监控:持续监控生产环境中的潜在策略违规

nonce(随机数):

  • 每次页面加载时生成一个随机字符串
  • 在 CSP 头中声明 'nonce-abc123'
  • <script nonce="abc123"> 中使用相同值
  • 适用于动态生成的内联脚本
  • 需要服务端支持,每次请求生成新 nonce

hash(哈希值):

  • 计算内联脚本内容的 SHA-256/384/512 哈希
  • 在 CSP 头中声明 'sha256-XYZ...'
  • 脚本内容不变则哈希不变
  • 适用于静态内联脚本
  • 无需服务端动态生成