从阅读CSP Standard specification and examples看来,它似乎不支持给定URL的路径部分中的通配符。这似乎是一种疏忽,因为许多CDN和静态文件托管提供商在其用户之间共享根域名,并且仅区分对URL路径而非整个域的访问。
例如,当您使用S3或Google云端存储作为CDN时,您可能希望CSP允许使用通配符网址从您的存储桶加载脚本/资产,例如" https://storage.googleapis.com/my-apps-bucket/ *& #34;但是对https://storage.googleapis.com的剩余部分禁止使用它们,因为对于恶意行为者来说创建自己的帐户并从该根域提供内容是相当微不足道的。
这似乎是一个非常常见的用例,我误解了规范吗?如果没有,使用通配符路径的语法是什么,因为使用像Content-Security-Policy: script-src 'self' https://example.com/*
这样的标题似乎不起作用。
答案 0 :(得分:10)
规范(http://www.w3.org/TR/CSP/#match-source-expression)的“匹配源表达式”部分详细描述了URL匹配算法。它确实支持您所要求的内容,但您不使用通配符。
规范讨论了允许来源的可选“路径部分”,并说如果允许的URL以斜杠“/”结尾,则它是前缀匹配而不是完全匹配。
因此,在您的示例中,如果您允许
https://storage.googleapis.com/my-apps-bucket/
带斜杠但末尾没有星号,它将匹配该URL下面的文件,例如
https://storage.googleapis.com/my-apps-bucket/file1.js