当前位置: 首页 > 知识库问答 >
问题:

Javascript安全问题

何骞尧
2023-03-14

在我前面的问题中:确保javascript游戏计时

... 很明显,Javascript/Canvas游戏中的客户端计时是不安全的。我知道关于不信任客户的咒语——这就是导致我首先挣扎的原因。:-)

所以,如果我真的把所有的时间都转移到服务器上并处理它,这是一个后续问题。游戏显然需要在提交之前完成。由于游戏谜题都是Javascript,这就引入了操纵客户端代码来伪造游戏完成的问题。

我已经在一个单独的类文件中创建了游戏JS代码。如果我这样实例化游戏:

var game;
$document.ready(function(){
  game = new Game();
});

...然后,我可以通过控制台访问“游戏”对象及其所有方法和变量。

但是,如果我这样做:

$document.ready(function(){
  var game = new Game();
});

... 然后我无法通过控制台访问“游戏”对象。这似乎有帮助,但有什么我不知道的吗?这个对象是否仍然可以以某种我不知道的方式访问,或者使它在该函数中成为一个更安全的私有变量?

谢谢

共有1个答案

糜俊彦
2023-03-14

不要太在意控制台。是的,如果有全局对象的方法可以很容易地激发以“赢得”游戏,那么作弊的可能性很高,但正如您所演示的,它可以很容易地防止。

因此,黑客只需监听(查看网络窗格)向您的服务器发出哪些请求,然后手动触发它们。如果它们只是一些简单的URL,比如/action=start/action=end,他可以很容易地手动启动它们,而无需任何计时。因此,您需要防止这种情况(尽管您永远无法真正做到安全),例如,添加额外的凭证令牌。或者你可以在游戏代码中嵌入一些“秘密”,这些秘密在游戏过程中会被泄露,需要发送到服务器以证明其正确性。当然,它们可以从你的代码中读取,但是你必须让它对黑客来说太复杂。这有点像默默无闻的安全…

 类似资料:
  • 前端项目安全问题: 安全部门不知道用什么工具扫了下前端代码,说有高危代码,代码如下: 片段一: const e = ev || window.event const { data } = e 被标记的是 data,安全提示是:第 214 行中发生了不安全对象分配。在没有验证的情况下分配外部属性可能会导致对象属性污染并影响应用程序的正常行为。 片段二: const url = window.loca

  • 异步Javascript和XML(AJAX)是用于开发Web应用程序以提供丰富用户体验的最新技术之一。由于它是一项新技术,因此尚未完成许多安全问题,以下是AJAX中的少数安全问题。 攻击面更多,因为需要保护更多输入。 它还公开了应用程序的内部功能。 无法保护身份验证信息和会话。 客户端和服务器端之间存在非常狭窄的界限,因此存在安全性错误的可能性。  示例 以下是AJAX安全性的示例 - 2006年

  • Redis是一个弱安全的组件,只有一个简单的明文密码,因此在保护上需要对其他多方面的措施,另外,很多所谓安全问题不是redis本身造成的,而是误用的结果。

  • 问题内容: 我有基于json的数据结构,其中包含嵌套对象。为了访问特定的数据元素,我一直将对对象属性的引用链接在一起。例如: 如果未定义b或bc,则将失败并显示错误。但是,我想获得一个值(如果存在的话),否则只是未定义。无需检查链中每个值是否存在的最佳方法是什么? 我想尽可能地保持这种方法,所以我不必添加大量的辅助方法,例如: 要么 我也想尝试避免使用try / catch构造,因为这不是错误,因

  • 本任务将演示如何通过使用Istio认证提供的服务账户,来安全地对服务做访问控制。 当Istio双向TLS认证打开时,服务器就会根据其证书来认证客户端,并从证书获取客户端的服务账户。服务账户在source.user的属性中。请参考Istio auth identity了解Istio中服务账户的格式。 开始之前 根据quick start的说明在开启认证的Kubernetes中安装Istio。注意,应

  • 主要内容:什么是安全函数(safe function),如何取消安全函数的限制在 VS(Visual Studio)下编译C语言程序,如果使用了 scanf()、gets()、strcpy()、strcat() 等与字符串读取或操作有关的函数,有时候VS会报错,提示该函数可能不安全,并且建议替换为带有 后缀的安全函数,如下图所示: 什么是安全函数(safe function) scanf()、gets()、fgets()、strcpy()、strcat() 等都是C语言自带