内容安全策略:default-src *

sch*_*jos 2 security iframe content-security-policy

我开始在使用内联脚本和其他犯罪行为的网站上探索“内容安全策略”。我为每个标头字段配置了CSP,如下所示:

content-security-policy: default-src *; frame-ancestors 'self'; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdn.jsdelivr.net *.stripe.com; report-uri https://sentry.io/api/x/csp-report/?sentry_key=y
Run Code Online (Sandbox Code Playgroud)

我现在的问题是浏览器抱怨以下消息:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“ default-src *”

我阅读了文档,default-src <source>其状态<source>可能是以下来源之一:

  • <host-source>
  • <scheme-source>
  • 'self'
  • 'unsafe-inline'
  • 等等

在我看来,星号只能用于宿主源。但是由于<source>似乎只允许一个人,我还能做什么?default-src * 'unsafe-inline'不符合要求,对吧?

我的目标基本上是使用一个可行的最小CSP配置(并且可以通过iframe嵌入)。我知道,遵循特定规则是最佳做法。

sid*_*ker 5

在我看来,星号只能用于宿主源。

但是由于<source>似乎只允许一个人,我还能做什么?

<source>允许使用多个。

default-src * 'unsafe-inline' 不符合要求,对吧?

它符合要求。

您可以使用https://cspvalidator.org/进行检查。或https://csp-evaluator.withgoogle.com/

但是您确实要避免'unsafe-inline'在任何CSP策略中指定。使用'unsafe-inline'几乎破坏了CSP的全部目的。

您想要对引起CSP错误的任何内联脚本执行的操作是:将脚本从文档中移出并将它们移到单独的文件中。这就是重点。

但如果你真的必须指定'unsafe-inline',然后尽可能的交易与特定错误的问题引用,你应该只指定'unsafe-inline'script-src-因为错误消息说,“拒绝执行内嵌的脚本。”

如果不是指定'unsafe-inline'default-src,那么这将导致浏览器不能为做CSP检查任何文档中内嵌的资源-样式等,也不仅仅是脚本。

因此,如果唯一的问题是内联脚本,并且由于某种原因您无法通过将脚本移至单独的文件或为其指定哈希或随机数来解决此问题,则至少应仅指定'unsafe-inline'for script-src