为什么服务工作者不能在http站点上工作?

时间:2016-09-06 13:52:52

标签: javascript security https service-worker progressive-web-apps

我正在学习服务工作者API。我发现它有更酷的功能。但让我感到兴奋的是为什么它仅适用于https网站,而不适用于http网站?

我认为这与安全性有关,但在浏览时我无法找到原因。所以解释这个的任何解释都是值得赞赏的......

2 个答案:

答案 0 :(得分:4)

由于服务人员相当强大,即使原始页面不再打开也能够运行,您真的想限制谁可以设置服务工作者以及谁不能。由于普通HTTP请求非常容易man-in-the-middled,因此可以将任何随机Javascript注入此类请求,这可能会设置服务工作者。这意味着,您的ISP,像中国这样的政府或严重的攻击者可以非常轻松地建立服务工作者。通过要求HTTPS连接,很大程度上避免了中间人,你至少可以确保设置服务工作者的Javascript实际上来自你认为它所做的页面。

答案 1 :(得分:3)

为了补充@deceze的答案,如果攻击者是中间人与HTTP站点的连接,它只能在这次访问时破坏此站点 - 以后与站点的连接不能保证会受到损害,并且对于依赖于本地网络访问的攻击实例可能不容易再现。

如果可以在http网站上使用服务工作者,攻击者只需要做一次中间人攻击就可以永久(或者至少在该浏览器被清除之前)内容的来源为网站说。