【发布时间】:2014-06-16 18:38:52
【问题描述】:
我使用 JavaScript 和 AngularJS 创建了一个简单的游戏。今天向我的团队展示它时,一位团队成员破解了代码并因此赢得了比赛。
这个想法是每个玩家点击一个按钮来生成一个介于 1-100 之间的随机数。 Tom(截图如下),在 JavaScript 中放一个断点,每次都将数字改为 99。
有没有办法防止这种情况发生?从我所听到的和一些谷歌搜索来看,似乎无法阻止这种情况。需要访问服务器,以便在那里生成随机数。
对吗?我是否需要更改我的游戏以对每一代随机数进行服务器调用?如果是这样,是否至少有某种方法可以使在浏览器中被黑客入侵变得极其困难?使用 JavaScript 和 AngularJS,很高兴将这一切都放在前端;它又快又容易。
【问题讨论】:
-
不可能。让服务器端做更多的工作。
-
“Hacked”是一个使用非常松散的术语 - 驻留在客户端上的任何代码都可能面临被修改的风险 - 预防措施包括缩小和混淆客户端代码 - 但作为一般经验法则- 如果需要 100% 安全,请在服务器上进行。
-
我会尝试混淆代码并使其全部成为一行。虽然它仍然可以破解,但您需要更高级的工具。否则,您必须在服务器端创建号码。
-
请注意,单独访问服务器可能无法解决此问题。他总是可以在那次旅行的成功中设置一个断点并在那里改变它。游戏的结果需要由服务器决定,无需客户端输入。
-
@KevinB 啊,所以实际人数,总分等,都在服务器上。即使用户更改了要显示的数字,也不会改变游戏本身的结果。谢谢!
标签: javascript angularjs