如题
对于现在大部分的积分性质的h5游戏,比如:阿里的这款demo,Flappy Bird
在游戏结束的时候,需要发送请求到后端,以此来记录玩家的分数,展示排行榜等信息。
但是,目前h5游戏对于用户来说,既是开源的,那么,用户作弊的门槛就会特别低,即使服务端做再多的验证,也是无济于事。不知道,此类问题是否有相对完美的解决方案?
综述:
感谢两位楼主的解惑,以及二楼精彩的评论。的确,前端任何加密都是增加破解成本而已。
我们可以不仅对请求参数各种形式的加密,对关键的js代码也做混淆加密,增加破解门槛。
根据防止表单重复提交的原理,生成唯一sign,防止不玩游戏直接通过链接提交。
在游戏开始的时候,发送一个请求,在服务端记录当前时间或者其它一些标识,游戏结束的时候,根据时间或者当前的标识去做逻辑判断,比如,类似这个游戏,分数和时间是有数学关系的。
对于一定范围之后的分数,做更为复杂的验证,分析用户行为等等。
我看了一下, 就是给的链接就是重写了h5版的 flappy bird.
并且, 没有发请求.
localStorage存储的.
因为这个游戏本身就是这种需求.
上述就是为了证明这个demo与题主的需求不同
题主的需求是为了生成排行榜, 在不同端post/get. 所以需要后台支撑.
同时发送请求时容易被恶意调用, 导致排行榜的真实性被破坏.
根据这个条件, 我想到了 2个办法:
首先h5(游戏)页面不可能脱离微信, 毕竟是当前国内最大的社交平台.
甚至可以完全依赖微信, 公众号开发(估计会有), 去验证是否在微信中浏览, 如果不是, 直接跳转到中转页, 干脆不让用户玩.这个功能, 完全可以自己模拟出来.
在请求中加密.
自己制定一套加密方案, 比如生成一个排行数据, 在前端加密 (可以多加密几层, 但是要做到不破坏内容, 即可逆), 到后台再解密.
补充一点, 就如下放评论中@hzc说的, 前端任何加密都是增加破解成本
而已
.