做一个微信小游戏,游戏结果积分抽奖。但是不想被用户不玩直接提交结果。js代码又是开源的,要怎么处理。
怪我咯2017-04-10 14:56:42
UUID
UUID
UUID
或者低于一个时间阀值的肯定是作弊的最好说还是要登录状态下,还能限制次数等
伊谢尔伦2017-04-10 14:56:42
只能做混淆. 即使你混淆 也可以通过时间解除你的魔咒
推荐一篇普及的好文<对抗假人> http://www.cnblogs.com/index-html/p/frontend-based-war.html
阿神2017-04-10 14:56:42
之前做过类似的手游。当时处理的思路是这样的。
整个网站是https的,自带检测手机UA和触摸屏(尽可能防止PC模拟),页面里面的js混淆,跟服务器互动都用可逆的加密算法。
开始游戏之前向服务器申请加入游戏。服务器返回唯一的token作为本局游戏的ID。
因为我们的那个小游戏有涉及一些触摸的行为,在游戏过程中会将行为存好,结束游戏后将token、分数还有行为数据传上服务器。
至于怎么判断有没有作弊,无非就是检查时间差还有行为能否得到最后结果。
最后结果返回。
不过游戏中“行为”比较少,服务器负担得起。如果想节省成本可以选择不即时处理行为,等到稍空闲的时候处理,然后后台处理废除作弊用户的记录。
你的抽奖部分一定是要后台判定游戏完成才允许有这个token的用户抽,这个你懂的。
怪我咯2017-04-10 14:56:42
理论上是不可能的,脚本型的语言,解析器总是要解析的嘛。和天猫的一样,抽奖逻辑放服务端,只返回结果。至于用户想直接提交,这个没办法,别人不看js代码,抓包也能做到。你可以在服务端限制时间间隔,提交太快就不处理。
巴扎黑2017-04-10 14:56:42
个人建议你把js使用压缩软件进行混淆压缩,这样别人就算拿了你代码,也无法解密出来的。
还有建议是前端的js控制游戏过程,服务器端控制游戏结果。这样比较安全。
PHP中文网2017-04-10 14:56:42
前端是没办法做到百分百加密的,如果加密了浏览器就识别不了没法解析了,所有只能做压缩混淆,这只是将多余的符号(如空格...)去掉,还有将变量名变成简单的英文字母而已,本质还是没有加密的