用于服务器端验证的 javascript 事务日志

标签 javascript php html anti-cheat

在客户端 (js) 编写但有多人游戏元素(例如排行榜)的游戏中。将用户操作记录到带有时间戳的事务日志以验证提交数据的完整性的最佳方法是什么?您将如何验证此日志中的操作?

是否有必要这样做,或者编写一个向服务器提交分数的哈希函数并混淆代码就足以防止这种作弊行为?

编辑 - 游戏描述:

在这个游戏中,您在 50 格长的 map 上行走。在每一 block 瓷砖上,您都可以遇到敌人/城镇/事件(寻找硬币等)。每次您到达 map 的尽头,都会加载一张难度稍高的新 map 。这个困难与玩家和他从城镇购买的元素一起被保存(在 MYSQL 数据库上使用 PHP)。这些元素根据它们的统计数据(dmg/hp/defense 等)有一个 power int。这些元素的力量被汇总并被保存。

排名前 10 名玩家的实力、阶段(难度)和用户名显示在排行榜中,按最高实力排序。

最佳答案

一般来说,没有有效的方法来防止客户端作弊。
在排行榜和用户发布分数方面,防止作弊的唯一方法是在后端处理数据或至少尝试在那里验证数据。

在发送到服务器之前对数据进行散列处理没有帮助,因为有人可以在散列处理之前轻松修改数据。

事务日志无济于事,因为有人可以在将数据提交到事务日志之前轻松修改数据,甚至可以禁用日志记录。

混淆基本上是security through obscurity这将使您的代码更难破解,但绝对不会使其安全作弊。

同样,您永远不能相信来自客户端的任何数据,因此您需要一个后端来控制整个游戏过程或验证数据。

关于用于服务器端验证的 javascript 事务日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51831602/

相关文章:

php - Keyup 显示一次成功信息

javascript - 从 csv 文件中排除显示的某些值

javascript - mac "VoiceOver"访问模态框下方的内容

html - 同一页面内的 anchor 不起作用?

javascript - 模态关闭后,vimeo 视频中的音频继续

javascript - 如何使用 javascript 在我的按钮点击上添加此类?

Javascript - 加载类的所有元素时的事件监听器

javascript - WebGL - 连续应用多个程序

javascript - 为什么 (x^0===x) 输出 x 而不是 true/false?

php - Phalcon加载辅助文件库