Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阻止网站更改,永远_Javascript_Security_Service Worker_Page Refresh_Trust - Fatal编程技术网

Javascript 阻止网站更改,永远

Javascript 阻止网站更改,永远,javascript,security,service-worker,page-refresh,trust,Javascript,Security,Service Worker,Page Refresh,Trust,出于安全原因,我需要这样做,一旦网站加载到浏览器中,即使手动刷新,也无法更新该网站。服务人员和/或其他技术是否可能做到这一点,如果可能,如何做到?如果可能,任何攻击者都可以临时劫持网站,并造成永久性损坏(通常是污损)。委员会对此进行了详细讨论 因此,不可能阻止网站所有者或用户更新网站。在澄清问题性质后进行编辑。 您希望确保用户不会受到其最初加载数据的网站(恶意)更改的影响 再次,这是针对客户端-服务器应用程序< /强>的设计,但是您可以考虑创建只由客户端组成的页面:仅由HTML、CSS和Java

出于安全原因,我需要这样做,一旦网站加载到浏览器中,即使手动刷新,也无法更新该网站。服务人员和/或其他技术是否可能做到这一点,如果可能,如何做到?

如果可能,任何攻击者都可以临时劫持网站,并造成永久性损坏(通常是污损)。委员会对此进行了详细讨论


因此,不可能阻止网站所有者或用户更新网站。

在澄清问题性质后进行编辑。

您希望确保用户不会受到其最初加载数据的网站(恶意)更改的影响

再次,<强>这是针对客户端-服务器应用程序< /强>的设计,但是您可以考虑创建只由客户端组成的页面:仅由HTML、CSS和JavaScript组成的页面,一旦加载后,就不会与服务器进行通信。 如果用户刷新页面(将从服务器重新加载数据,将缓存放在一边),这将导致中断

除此之外,不可能“冻结”浏览器接收到的内容,这取决于应用程序与后端讨论(由您控制)以及用户重新标记页面(由用户控制)

您还可以想象,一旦请求者加载一次页面,就会将其列入黑名单(基于IP,可能是指纹)

所有这些都是无法实现的技巧,特别是在安全敏感应用程序的上下文中


(初步答覆)

当您从网站收到数据时,作为网站所有者,您将失去对该数据的所有控制。它将以接收客户端(通常是浏览器)认为合适的方式显示

这也意味着接收数据的人可以修改数据

现在,人们可以想象各种各样的想法,使愿意修改数据的接收者难以生活。我脑子里想不出

  • 发送图像(应用程序的屏幕截图)而不是普通的HTML
  • 将应用程序设置为通过WebSocket连接到服务器,并以这样的方式构建应用程序:如果显示的数据不一致,应用程序将中断
  • 让页面一直刷新
可能会有其他愚蠢的想法,比如这些,但有一点必须明确:这些都是愚蠢的想法。你正试图使一种功能与自然对立

出于安全原因(……)


这种非自然弯曲的最糟糕环境之一可能是安全性。如果这样做,您会遇到问题。

您在这里的主要目的是什么?不管你说什么,无论如何都是不可能的。由于手动刷新在任何情况下都会起作用,所以您可以做的一件事是,将您的代码转换为electron,然后也许您就可以做您想做的事情。“出于安全原因”是什么意思?当网站被发送到浏览器时,您无法控制用户将如何处理您的代码。都是公开的。任何人都可以看到您的Javascript并从页面中删除HTML元素,但无论如何,它永远不会保存到您的服务器,它只会发生在个人的浏览器中,重新加载后一切都会恢复正常,所以何必费心呢?我不认为你想构建桌面应用程序,而不是web应用程序。@JeremyThille你的敌人不是用户,而是有人可能接管服务器并更改脚本,从而使用户处于危险之中。因此,如果有人劫持你的服务器,你仍然想向用户发送一个安全、未经检查的网站版本?那太好了,不是吗?:)不,我要保护网站的不是用户,而是服务器的变化——例如,如果一个卑鄙的人控制了网站,用发送给他的所有密码替换了所有的加密代码,我如何保护用户不受影响?