内容安全策略标准是否支持通配符路径?如果没有,为什么不呢?

dep*_*ner 6 cdn amazon-s3 google-cloud-storage content-security-policy

从阅读CSP标准规范和示例看来,它似乎不支持给定URL的路径部分中的通配符.这似乎是一种疏忽,因为许多CDN和静态文件托管提供商在其用户之间共享根域名,并且仅区分对URL路径而非整个域的访问.

例如,当使用S3或Google云端存储作为CDN时,您可能希望CSP允许使用通配符URL(例如" https://storage.googleapis.com/my-apps)从您的存储桶加载脚本/资产-bucket /*"但是对于https://storage.googleapis.com的其余部分禁止使用它们,因为对于恶意行为者来说创建自己的帐户并从该根域提供内容会相当微不足道.

这似乎是一个非常常见的用例,我误解了规范吗?如果没有,使用通配符路径的语法是什么,因为使用标题Content-Security-Policy: script-src 'self' https://example.com/*似乎不起作用.

小智 11

规范的"匹配源表达式"部分(http://www.w3.org/TR/CSP/#match-source-expression)详细描述了URL匹配算法.它确实支持您要求的内容,但您不使用通配符.

该规范讨论了允许的源的可选"路径部分",并说如果允许的URL以斜杠"/"结尾,则它是前缀匹配而不是完全匹配.

所以,在你的例子中,如果你允许的话

https://storage.googleapis.com/my-apps-bucket/
Run Code Online (Sandbox Code Playgroud)

例如,使用斜杠但最后没有星号,它将匹配该URL下面的文件

https://storage.googleapis.com/my-apps-bucket/file1.js
Run Code Online (Sandbox Code Playgroud)