javascript - 防止 JavaScript 黑客攻击

标签 javascript angularjs

<分区>

我使用 JavaScript 和 AngularJS 创建了一个简单的游戏。今天在向我的团队展示它时,一名团队成员破解了代码并因此赢得了比赛。

这个想法是每个玩家点击一个按钮来生成一个 1-100 之间的随机数。 Tom(下图),在 JavaScript 中打断点,每次都将数字更改为 99。

有没有办法避免这种情况?从我所听到的以及一些谷歌搜索来看,似乎无法阻止这种情况;需要访问服务器以便在那里生成随机数。

是吗?我是否需要更改我的游戏以便为每一代随机数调用服务器?如果是这样,是否至少有某种方法可以使在浏览器中进行黑客攻击变得极其困难?使用 JavaScript 和 AngularJS,将这一切都放在前端真是太好了;既快速又简单。

enter image description here

最佳答案

防止这种情况的最好方法是调用服务器并记录您发送给客户端的值,以便您可以对其进行验证,这是真正实现这一目标的唯一万无一失的方法。

但是,您可以采取一些措施来让客户端变得非常困难。如果你要缩小你的 JavaScript 代码(也可能混淆所有方法名称),这将很难理解它在做什么,也很难在正确的点设置断点。

例如,在 Chrome 中,我只有 4 行可供选择以在 jquery.min.js 中中断。如果我想编辑突出显示的部分,如果不通过 deminification 过程发送此代码或使用 fiddler 等工具重定向到不同的 JavaScript,这几乎是不可能的。

enter image description here

关于javascript - 防止 JavaScript 黑客攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250060/

相关文章:

javascript - Angular 表,使用 ngClass 和 ng-repeat 添加类

javascript - jquery 同位素最大化项目以适合父容器

javascript - 如何通过为每个对象指定过滤器类型来过滤 AngularJS 中的对象?

javascript - HTML 和 Angular 中的动态变量?

javascript - 如何使用不同的数据将数据多次解析到嵌套 View 中

javascript - 如果是 webapp,脚本应该包含在 head 中吗?

javascript - 如何编写正则表达式来验证 4 个字符的字符串是否为非零二进制数?

javascript - Google 图表 HTML 从右到左问题

javascript - 以迭代方式查找对象的深度

javascript - angular ui-router 所有 Controller 都重新加载状态变化