Ben*_*cka 9 apache caching http content-security-policy service-worker
我在尝试使用内容安全策略来保护我的网站时发现了一个有趣的问题,而且还发现了ServiceWorker加速它并使其脱机运行.
它是一个标准的Wordpress网站,插件开发人员习惯使用外部资源,特别是在/ wp-admin /部分.我不知道在主站点上将大量内容列入白名单(特别是不安全的eval,这是管理部分的常见罪魁祸首),所以我做的是制作一个主要的CSP,然后在/ wp-admin /我取消设置重置限制较少的集合.
以下是我在网站管理员区域中用来取消设置CSP的代码示例:
<Location /wp-admin/>
<IfModule mod_headers.c>
Header always unset Content-Security-Policy
Header unset Content-Security-Policy
Header set Content-Security-Policy " default-src 'self' ps.w.org;"
</IfModule>
</Location>
Run Code Online (Sandbox Code Playgroud)
它工作正常,除非你去过(或有另一个标签打开)网站的主要区域,此时ps.w.org指令(和其他)被忽略.一堆资产最终被阻止,脚本无法正常工作等.在admin部分刷新页面会临时加载正确的CSP,所以我知道它正在被使用; 它只是被主要的覆盖了.有时,主站点也会发生同样的情况,也会加载管理CSP.
ServiceWorker是缓存CSP还是在这里发生了什么?有没有办法让ServiceWorker尊重页面应该在其标头中发送的CSP?目前我刚刚将两个CSP设置合并为一个并删除了管理区域的超宽规则,但这并不理想.