首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测到用户正在通过控制台发送命令?

如何检测到用户正在通过控制台发送命令?
EN

Stack Overflow用户
提问于 2019-04-30 18:20:14
回答 2查看 81关注 0票数 0

我正在制作浏览器游戏,我想阻止用户,如果他是通过控制台脚本。如何正确检测用户正在使用console发送脚本?

我一直在寻找解决方案,但我仍然不确定。我看到你可以通过CSP检测到它..

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-04-30 18:28:16

这将非常复杂,但从理论上讲,您可以确保所有代码执行都发生在您通过匿名函数定义的作用域中。这样,通过控制台执行的所有内容都将在不同的作用域中(这是默认作用域),并且您可能会将代码添加到您拥有的每个公共函数中,您可以在其中检查代码执行的位置。但同样,用户拥有对浏览器的完全控制。

我读到你在玩游戏时注意到了这一点。例如,http://agar.io使用这种隔离范围技术来避免用户篡改游戏值。这不是万无一失的,因为精明的用户仍然可以尝试代码注入您的代码,以添加句柄来公开您的代码的内部片段。

但是,您可以实现一些技巧来使用户更加困难(参见https://x-c3ll.github.io/posts/javascript-antidebugging/)。

票数 0
EN

Stack Overflow用户

发布于 2019-04-30 18:43:56

适用于Chrome

下面是我最喜欢的来自earlier answer的解决方案

代码语言:javascript
运行
复制
setInterval(() => {
  var element = new Image();
  Object.defineProperty(element, 'id', {
    get: function() {
      // behaviour to execute when the console is open      
      console.log('open', new Date());
    }
  });
  console.log(element); // trigger 
}, 2000);

每隔2秒(或者无论您如何初始化时间间隔),您都会知道控制台是否在get函数中打开

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55918838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档