【发布时间】:2019-03-08 15:05:54
【问题描述】:
我想在我的站点上实现 CSP,但也有一个 Service Worker,它可以缓存资源并在您离线时提供通知。我已经定义了以下政策:
style-src 'self'; object-src 'none'; script-src 'self' 'unsafe-inline'; worker-src 'self'; frame-ancestors 'none';
Google 的 CSP 评估器会针对 worker 的 init 函数发出警告 - 因为内联脚本可用于做坏事 - 即使我已指定仅从我的域加载 worker (worker-src 'self')。
将此函数列入白名单的首选方法是什么?
<script>
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/sw.js')
.then( function (registration) {
console.log('Success!', registration.scope);
})
.catch( function (error) {
console.error('Failure!', error);
}); }
</script>
【问题讨论】:
-
“工人的初始化功能”指的是什么?正在运行的实际代码是什么,就像它内嵌在 HTML 中的
<script>标记中一样? -
它实际上只是一个基本的服务工作者 - 代码在上面。虽然我已经在几个站点上部署了它们,但这也是我第一次尝试实现 CSP,所以我不知道这是否可以抽象为它自己的脚本。例如,你能不能让
setup.js初始化sw.js?
标签: service-worker content-security-policy