【问题标题】:Prevent JavaScript Hacking [duplicate]防止 JavaScript 黑客攻击 [重复]
【发布时间】:2014-06-16 18:38:52
【问题描述】:

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

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

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

对吗?我是否需要更改我的游戏以对每一代随机数进行服务器调用?如果是这样,是否至少有某种方法可以使在浏览器中被黑客入侵变得极其困难?使用 JavaScript 和 AngularJS,很高兴将这一切都放在前端;它又快又容易。

【问题讨论】:

  • 不可能。让服务器端做更多的工作。
  • “Hacked”是一个使用非常松散的术语 - 驻留在客户端上的任何代码都可能面临被修改的风险 - 预防措施包括缩小和混淆客户端代码 - 但作为一般经验法则- 如果需要 100% 安全,请在服务器上进行。
  • 我会尝试混淆代码并使其全部成为一行。虽然它仍然可以破解,但您需要更高级的工具。否则,您必须在服务器端创建号码。
  • 请注意,单独访问服务器可能无法解决此问题。他总是可以在那次旅行的成功中设置一个断点并在那里改变它。游戏的结果需要由服务器决定,无需客户端输入。
  • @KevinB 啊,所以实际人数,总分等,都在服务器上。即使用户更改了要显示的数字,也不会改变游戏本身的结果。谢谢!

标签: javascript angularjs


【解决方案1】:

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

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

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

【讨论】:

  • 但是通过脚本调用服务器也可以被操纵:),因为那也是javascript
【解决方案2】:

您可以缩小 javascript,这可能会有所帮助,但从技术上讲,这是没有办法的。您需要将一些逻辑服务器端移到可以验证的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多