Javascript 为什么服务工人赢了';你不能在http站点上工作吗?

Javascript 为什么服务工人赢了';你不能在http站点上工作吗?,javascript,security,https,service-worker,progressive-web-apps,Javascript,Security,Https,Service Worker,Progressive Web Apps,我正在学习服务工作者API。我发现它有更多很酷的功能。但让我兴奋的是,为什么它只在https站点上工作而不在http站点上工作? 我相信这与安全有关,但我在浏览时找不到原因。因此,任何解释都是值得赞赏的…因为服务人员非常强大,即使原始页面不再打开也可以运行,所以您确实需要限制谁可以设置服务人员,谁不能。因为普通HTTP请求非常容易,所以任何随机Javascript都可以注入到这样的请求中,这可以设置一个服务工作者。这意味着,你的ISP、像中国这样的政府或严重的攻击者可以很容易地设置服务人员。通过

我正在学习服务工作者API。我发现它有更多很酷的功能。但让我兴奋的是,为什么它只在https站点上工作而不在http站点上工作?


我相信这与安全有关,但我在浏览时找不到原因。因此,任何解释都是值得赞赏的…

因为服务人员非常强大,即使原始页面不再打开也可以运行,所以您确实需要限制谁可以设置服务人员,谁不能。因为普通HTTP请求非常容易,所以任何随机Javascript都可以注入到这样的请求中,这可以设置一个服务工作者。这意味着,你的ISP、像中国这样的政府或严重的攻击者可以很容易地设置服务人员。通过要求HTTPS连接,基本上可以避免中间人,并且您至少可以确保设置服务工作者的Javascript实际上来自您认为它确实来自的页面。

为了补充@deceze-answer,如果攻击者中间人连接到HTTP站点,这一次它可能只会破坏该站点-不保证以后与该站点的连接会受到破坏,例如,对于依赖本地网络访问的攻击,可能不容易复制


如果一个人可以在http网站上使用服务工作者,攻击者只需进行一次中间人攻击即可(或者至少在清除该浏览器之前)上述站点的内容来源。

这是为了确保工作代码本身是真实的。您能提供一个示例,说明允许服务工作人员在http站点上工作的错误原因吗?我相信解释其罪恶原因的例子或场景将有助于更好地理解和欣赏所提供的解释。你能给我一个中间人攻击的例子吗?如果服务人员被允许在HTTP站点中?中间的人会是,例如,你的ISP。它可以看到每一个纯文本HTTP请求和响应,因为它正在中继数据。因为它在中继数据,所以它也可以更改数据。它可以非常简单地将一些额外的Javascript添加到任何HTML中,从而可以设置一个服务人员。ISP就是一个很好的例子。另一个例子是网吧里的路由器。但如果攻击者使用服务工作者api,它会对用户造成什么伤害?如果攻击者在中间做人,浏览器允许那些HTTP站点,为什么它不允许HTTP站点中的服务工作者?@ GopPosits:服务工作者是一个“永久”的软件安装到用户浏览器中的简单方式。软件真正能做什么并不重要;一个不受欢迎的第三方能够安装一个永久程序的想法就足以成为不允许它的理由。狡猾的攻击者会想方设法利用这些优势。即使他们只是在运行无限循环并消耗CPU能量,这本身就是破坏性的。但如果攻击者使用服务工作者api,它会对用户造成什么伤害?如果攻击者做中间人和浏览器允许那些HTTP站点,为什么它不允许HTTP站点中的服务工作者?比如说你在http上浏览你最喜欢的新闻网站,攻击者一天在一个开放的WiFi网络上拦截它,并设置一个服务人员:如果攻击者决定这样做,您将永远无法从此浏览器获取真正的原始网站。当然,您也可以一直在http上使用MiTM,但服务工作者会实质性地增加潜在MiTM的持续时间和影响。酷。另一个最好的例子。真的很感激