在JS中是否有可能从浏览器的控制台中检测是否运行了任何JS ?
Is it possible in JS to detect whether any JS was run from the browser's console?
我正在制作一款JavaScript游戏,我不希望有人作弊。是否有任何方法,我可以检测,并可能记录,命令问题在JavaScript控制台?我要寻找的框架是这样的:
consoleCommands = "";
window.console.command = function ( thiscmd )
{
consoleCommands += thiscmd;
}
window.onbeforeunload = function ( )
{
// send log of commands to server
$.ajax({url:'recordNewCommandLog',method:'POST',data:{cmdlog:consoleCommands}});
};
当然,攻击者可以覆盖它,但是我将尝试使其足够模糊,使攻击者很难首先发现他的命令正在被记录。 除了您收到的答案(和重复链接)之外,我希望您考虑以下问题:
你为什么在乎别人作弊?
- 如果是单人游戏,就让他们作弊吧,他们只会欺骗自己,你无法阻止他们。如果您阻塞了控制台,它们将使用用户脚本。如果你阻止它,它们将使用内存修改程序(如CheatEngine)并从那里更改值。
- 如果这是一款多人游戏,那么在反作弊方面进行投资是有意义的,这样他们就不会破坏其他所有人的体验。在这种情况下,让服务器做出所有重要的决定。不要相信客户端的任何话, 服务器应该是安全的,服务器应该能够告诉玩家不可能从怪物掉落中获得9999999钱,只是因为它这么说。
TL;博士
不要阻塞控制台。如果适用的话,保护您的服务器并让客户端"可被攻击"——无论如何,客户端是用户的域,而不是您的域。
var arr = [];
console.log = function () {
arr.push([].slice.call(arguments));
// if `arr.length` , do stuff
return console.log
}
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用onkeyup JS事件检查输入的值是否唯一
- JS数组-检查对象值是否重复
- 是否可以在使用headerphp函数后自动调用JS函数
- d3.js圆的半径是否可以由样式属性指定
- 如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS
- node.js是否具有'match()'方法如果是,语法是什么
- js文件是否阻碍了war文件的构建
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 如何判断请求/承诺是否需要超过5秒才能完成,angular js
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 检查数组中是否存在字符串值,并返回找到的数组值js
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 是否可以使用Chart.js缩短雷达图上的外部标签,而不影响其他标签
- 是否可以为React'打开React.js自动绑定;s类模型
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- mongodb检查值是否存在(node.js)
- Three.js-如何检查对象是否在球体后面(不可见)
- 如何使用JS检查AWS S3上是否存在动态创建的文件