在内容安全策略中,更具体的值是否完全取代了一般值?
In Content Security Policy do more specific values completely replace general ones?
我看过几个 CSP 参考资料,包括 developer.mozilla.org 上的一个非常好的参考资料,但找不到答案:假设我想允许来自 self 和 *.[=19 的所有内容=],但仅来自 *.googleapis.com 的脚本。我必须在 script-src 中重复 self 和 *.facebook.com 吗?
换句话说,这就够了吗?
Content-Security-Policy default-src 'self' *.facebook.com; script-src *.googleapis.com;
或者我需要指定:
Content-Security-Policy default-src 'self' *.facebook.com; script-src 'self' *.facebook.com *.googleapis.com;
您的第二个变体是正确的:
Content-Security-Policy
default-src 'self' *.facebook.com;
script-src 'self' *.facebook.com *.googleapis.com;
当您在策略中指定 script-src
指令时,浏览器根本不会将 default-src
中的任何来源用于脚本(不会回退到 default-src
)。将仅使用来自 script-src
的来源。
因此,如果您的应用从 'self'
和 *.facebook.com
加载脚本,您必须在 script-src
中独立于 default-src
内容指定它们。
我看过几个 CSP 参考资料,包括 developer.mozilla.org 上的一个非常好的参考资料,但找不到答案:假设我想允许来自 self 和 *.[=19 的所有内容=],但仅来自 *.googleapis.com 的脚本。我必须在 script-src 中重复 self 和 *.facebook.com 吗?
换句话说,这就够了吗?
Content-Security-Policy default-src 'self' *.facebook.com; script-src *.googleapis.com;
或者我需要指定:
Content-Security-Policy default-src 'self' *.facebook.com; script-src 'self' *.facebook.com *.googleapis.com;
您的第二个变体是正确的:
Content-Security-Policy
default-src 'self' *.facebook.com;
script-src 'self' *.facebook.com *.googleapis.com;
当您在策略中指定 script-src
指令时,浏览器根本不会将 default-src
中的任何来源用于脚本(不会回退到 default-src
)。将仅使用来自 script-src
的来源。
因此,如果您的应用从 'self'
和 *.facebook.com
加载脚本,您必须在 script-src
中独立于 default-src
内容指定它们。