内容安全策略 - 确定被阻止资源的来源

问题描述 投票:0回答:2

在 Firefox 中我收到以下错误:

Content Security Policy: The page’s settings blocked the loading of a resource at data: (“media-src”).

我不确定为什么会收到此错误,因为我没有托管视频或音频标签。

<add name="Content-Security-Policy" value="default-src 'self'; connect-src 'self'; font-src 'self'; frame-src 'self'; img-src 'self'; media-src 'self'; object-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"/>

如何在 Firefox 中找到被阻止资源的来源?

当网站没有外部资源时,你知道为什么会发生这种情况吗?


解决方案

我需要包含

data:
属性。

media-src 'self' data:;

firefox web-config content-security-policy
2个回答
1
投票

调试CSP的基本方法:

  1. 违规报告(
    report-uri
    指令)可以提供完整信息。
  2. Chrome 的控制台比 Firefox 提供更多信息。 Chrome 在控制台中显示被阻止的 URL(Firefox - 在某些情况下也是如此)。
  3. SecurityPolicyViolationEvent 提供与违规报告相同的信息(如果您熟悉 JavaScript)。

详细信息如何调试CSP


0
投票

NoScript(FF 上)可能是罪魁祸首

FWIW,我在 Firefox ESR 方面也遇到同样的问题(但 Chrome 没有)。每个页面(标题中只有适当的 CSP),即使正文为空(因此为 0 字节长),也会导致 FF 控制台中出现以下丑陋的警告:

Content-Security-Policy: The page’s settings blocked the loading of a resource at data: (“default-src”).

卸载

NoScript
扩展程序后,该消息就会消失。

禁用 TAB 上的

NoScript
还不够,当我从 FF 完全卸载扩展时它才消失。因此,
NoScript
扩展 - 可悲的是 - 将此警告注入到页面中,这意味着
NoScript
在触发向网站的 CSP 报告时会泄露您的隐私
,从而暴露其存在,可用于进行指纹识别(这只发生在不过,具有非常严格的 CSP 的页面)。

当我尝试调试此问题时,收到的 CSP 报告根本不是很有结论:

{
  "csp-report": {
    "blocked-uri": "data",
    "disposition": "enforce",
    "document-uri": "https://survey.example.net/",
    "effective-directive": "media-src",
    "original-policy": "default-src 'none'; base-uri 'none'; form-action 'self'; script-src 'self'; img-src 'self'; style-src 'self'; connect-src 'self' https://forum.example.net/; frame-ancestors 'none'; report-uri https://login.example.net/csp",
    "referrer": "",
    "status-code": 200,
    "violated-directive": "media-src"
  }
}

备注:

  • 我将真实域名替换为上面的
    example
  • Chrome 没有报告此类违规行为
  • 它可以被认为是一个 FF 错误,它报告了源自某些扩展的 CSP 违规
    • 请注意,
      uBlock Origin
      会停止发送 CSP 报告
  • 我只是通过反复试验才找到这个解决方案,因为收到的 CSP 报告并不能帮助我调试它们的真正来源
    • Chrome 根本没有这个问题,所以我首先要找出的是它们来自 FF
    • 第二件事是发现这源于
      NoScript
      安装了
    • 而且 FF 控制台在这种情况下也不是很有帮助
  • 因此,我可能不得不忍受像海啸一样涌来的 CSP 报告
    • CSP JSON 中没有任何源自 FF 的痕迹
    • 因此请务必在接收 CSP 脚本中记录完整的 HTTP 标头。
    • 我可能需要改进我的 CSP 接收器才能解决此类垃圾邮件
  • NoScript
    是对抗恶意网站和 JavaScript 的救星
    • 因此我不建议禁用它!
    • 而是将其与
      ublock-origin
      结合起来以保护您的隐私
© www.soinside.com 2019 - 2024. All rights reserved.