ServiceWorker 的出现,为前端开发提供了更多的技术支持,使 Web APP 具有 Native APP 的离线使用、消息推送、默认更新等功能,并给前端安全增添了不少新玩法。
HTTPS Only
Events:fetch,sync,push
浏览器支持程度局限性
运行在浏览器后台的独立线程的脚本
可拦截及处理网络请求
不能直接参与 Web 交互,比如:DOM 操作
推送通知、后台同步
PS: https://mdn.github.io/sw-test/ 这是一个在线 ServiceWorker 的 Demo,可以通过 chrome 浏览器开发人员选项勾选 Network 中 offline 来查看控制台 Console 帮助未接触过的同学快速理解 ServiceWorker。
作为一段独立于页面运行在浏览器后端的脚本。使用 Service Worker 来进行缓存,可以用 javascript 代码来拦截浏览器的请求,设置缓存文件,不经服务器直接返回。SW 工作原理基于注册、安装、激活等步骤,我们需要了解它的生命周期以至于帮助我们学会在各个生命周期阶段进行有目的的回调。
从安全角度来看不难想到可能带来的一些问题,如:基于 SW 的 XSS+JSONP 相当于持久化 XSS、DDos、流量盗用、基于 SW 构造僵尸网络结合 CSRF 扩大影响范围、新型 Flash 攻击、SW 缓存劫持。
对于防御基于 SW 的 XSS 可采取 CSP、域内不存在 XSS 及用户可控的 JS 文件、JSONP 接口应只允许特定字符 or 白名单。
功能简介
ServiceWorker 的出现原因
ServiceWorker 结构和特点
安全利用
水坑攻击
延长网页生命期
一些黑科技
流量盗用
防御探讨
于 2018 年 11 月 4 号晚上 8 点给大家倾情讲解~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.