在单页应用程序中定义动态内容安全策略

我想定义一个内容安全策略,默认情况下允许从任何来源加载图像,但将其限制为仅允许网站某些部分中的一组特定来源。

在为每个导航发出新 HTTP 请求的传统网站中,这可以通过Content-Security-Policy为需要更严格策略的页面发送不同的HTTP 标头来轻松完成。但是在单页应用程序中,这当然是不可能的,因为导航到应用程序的更严格的部分不会导致新的 HTTP 请求(我也想定义比 URL 导航更动态的条件的策略)。

我知道——除了在 HTTP 标头中——CSP 策略也可以在meta标签中定义,当定义多个 CSP 策略时,请求必须通过所有这些策略才能被允许。因此,我解决该问题的第一种方法是Content-Security-Policy在整个页面的标题中设置默认 CSP ,然后<meta http-equiv="Content-Security-Policy" content="…">在需要时通过向文档标题添加标签来动态设置更多限制性策略。

这适用于动态添加更多限制性策略。最大的问题是删除该元标记或修改它不会删除或修改相关的内容安全策略(在 Firefox 中的 Chrome 中测试)。此行为在W3C 内容安全策略规范中定义:

注意:元素解析后对元素content属性的修改meta将被忽略。

那么有没有办法动态添加(更重要的是删除)不依赖于 HTTP 导航的内容安全策略?我想避免在默认情况下设置限制性图像策略,然后通过散列或随机数排除单个图像,因为这将非常复杂地实现。

以上是在单页应用程序中定义动态内容安全策略的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>