Javascript 如何防止公共计算机中的JS劫持

Javascript 如何防止公共计算机中的JS劫持,javascript,security,Javascript,Security,此问题与JS劫持场景有关,如下所示: 假设古德先生有一个名为“iamtooinnocent.com”的网站,该网站加载一个“x.js”文件来执行某些特定任务,而巴德先生是一个邪恶的网吧所有者,他制定了一个重定向规则,即每当使用其网吧的冲浪者访问古德的网站时,当“x.js”文件文件将被请求它将简单地重定向到另一个邪恶的领域,比如一个不同的“x.js”文件,其中包含邪恶的代码,这样Good的网站将永远不会知道它有一个不同于它所请求的js文件 我希望我已经正确地解释了这个场景,所以我的问题是如何防止这

此问题与JS劫持场景有关,如下所示:

假设古德先生有一个名为“iamtooinnocent.com”的网站,该网站加载一个“x.js”文件来执行某些特定任务,而巴德先生是一个邪恶的网吧所有者,他制定了一个重定向规则,即每当使用其网吧的冲浪者访问古德的网站时,当“x.js”文件文件将被请求它将简单地重定向到另一个邪恶的领域,比如一个不同的“x.js”文件,其中包含邪恶的代码,这样Good的网站将永远不会知道它有一个不同于它所请求的js文件

我希望我已经正确地解释了这个场景,所以我的问题是如何防止这种情况?真的有办法防止这种情况吗?虽然我不太确定,但是通过使用HTTPS提供JS文件,可以防止这种情况吗?有人能给我一些关于这件事的建议吗


提前感谢。

HTTPS是对抗您所描述的攻击的标准。它使用站点的公共证书加密所有流量。所以不可能改变它。证书本身由第三方验证


但它不能保证100%的安全性,因为有可能创建一个只有在咖啡馆才能使用的本地假证书颁发机构。

如果计算机所有者反对你……你将很难。浏览器保证一定的安全规则,但计算机所有者可以根据其恶意内容修改它,而你也不会更聪明…

这是他们提供计算机的网吧吗?如果是这样的话,你只需要信任所有者,因为你不能在别人的机器上拥有安全性。如果没有别的,他们可以安装一个硬件键盘记录器

如果他们提供无线连接,而你带着笔记本电脑,HTTPS应该是一种保护措施。如果您的浏览器正确处理证书和SSL,则应该可以访问具有已验证证书且安全的站点。当然,如果您的浏览器出现任何问题,网吧所有者正处于利用它的理想位置,因此您可能需要关注已知的漏洞

最好的办法是不要光顾由邪恶所有者经营的网吧,但在世界上的某些地方,这可能很困难。

网络安全规则1归结为:永远不要信任客户

请记住,客户机可以对您发送给他们的数据以及他们发送给您的数据执行任何操作:

  • 为后续请求修改cookie
  • 更改或添加/删除其他HTTP头,欺骗用户代理
  • 在GET/POST中指定数据的任意组合

您应该假设从HTTP进入应用程序的任何数据都是恶意的、非法的、有害的,并进行相应的清理。

即使您可以解决这个问题,是什么阻止了咖啡馆所有者将整个域重定向到网络钓鱼页面?“这可能是一件没有实际意义的事情去尝试和阻止。@DA:我完全同意。我还认为,您的站点安全性永远不应该依赖于用户是否拥有“行为良好”的javascript文件。无论如何,您都应该验证客户端输入服务器端。@DA因为此策略允许网吧所有者使用您的帐户/凭据执行操作,而重定向到新页面则不行。@Aronsieb邪恶的网吧所有者还可以使用键盘记录器窃取凭据,尽管页面来自HTTPS或HTTP等,但浏览器插件仍可以执行此操作。我同意大家的看法,我确实有一个服务器端输入验证系统,用于检查所有用户输入@AaronSieb这就是我的意思,在这种情况下,提供不同的JS文件而不重定向整个站点实际上是有问题的,因为在这种情况下,JS文件可以窃取用户凭据并执行一些违背站点所有者利益的任务,这似乎是一个相当棘手的问题@米格尔:我理解键盘记录器和浏览器插件的事情,在这种情况下,如果不让网站用户的生活变得复杂,我可能帮不了什么忙。无论如何,你的评论都同意这一点。还有一些病毒可以创建“假”页面来窃取你的个人数据。咖啡馆老板可能不知道这一点。@Ivan是的,你是对的,在这种情况下HTTPS可能帮不了那么多