javascript - 如何从浏览器控制台禁用 JavaScript 函数调用?

标签 javascript html

我正在开发一个 HTML/JavaScript 网络应用程序,我想阻止用户在他们的浏览器控制台中调用函数以避免作弊。所有这些函数都包含在一个名为 functions.js 的唯一文件中,该文件加载在 index.html 文件的头部。

在网上搜索后,我找到了这个解决方案,它在 Google Chrome 中运行良好,但在其他浏览器(如 Firefox)中效率低下:

var _z = console;
Object.defineProperty( window, "console", {
    get : function(){if( _z._commandLineAPI ){ throw "Script execution not permitted" } return _z; },
    set : function(val){ _z = val }
});

有没有通用的方法来禁用从控制台调用的函数?它是否取决于浏览器,或者它只是一个范围问题,还是我忽略的其他问题?

最佳答案

Is there a general way to disable functions call from console?

没有。没有:从不。好吧,显然,Facebook 在 Google Chrome 中找到了这样做的方法:How does Facebook disable the browser's integrated Developer Tools? - 不过,我认为这是一个错误 :-)

Is it maybe something else that I have ignored?

是的。 JavaScript 在客户端执行,客户端对它拥有全部权力。他可以选择是否执行,如何执行,执行前可以任意修改。现代开发人员工具允许用户在调试脚本时在任意范围内执行任意函数。

您可以避免在全局范围内公开您的方法,并混淆(缩小)源代码,从而使反省和使用(调用)您的代码变得更加困难。但是,永远不要相信客户。为避免作弊,您必须在服务器上执行所有关键任务。不要指望所有请求都来自您的 JavaScript 代码或浏览器;您还需要处理可能由某种机器人发出的任意请求。

关于javascript - 如何从浏览器控制台禁用 JavaScript 函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19235872/

相关文章:

javascript - 预呈现不等待动态页面标题和元标记呈现

javascript - 如何连接字符串以构建正则表达式?

javascript - 将事件类添加到下一个 div,从 JS 中的当前 div 中删除

Javascript 在 html 上正确显示问题和答案并加载测验的下一个问题

html - 同时在表格的标题上获取边框半径和渐变时遇到问题

c# - 如何从 asp :TextBox when using MaxLength property? 中删除空格

javascript - 外部元素的 slider 控制

javascript - 如何在循环中返回多个(并行)异步函数调用的累积结果?

javascript - 按类名将图像 src 插入 Javascript 数组

javascript - 在每个 td 选择器之间添加破折号