前端提交的数据如何处理才能防止被篡改?应用场景是前端 JS 小游戏提交用户得分到后端,防止用户“开挂”提交高分

2014-10-29 10:33:36 +08:00
 qiayue
4751 次点击
所在节点    问与答
14 条回复
canesten
2014-10-29 10:35:03 +08:00
WEB的话,无解。
tabris17
2014-10-29 10:39:44 +08:00
把逻辑验证放到服务器进行,客户端只提交用户操作数据
xidianlz
2014-10-29 10:40:12 +08:00
加密后提交把 而且加密的代码也要加密哦
qiayue
2014-10-29 10:41:46 +08:00
@tabris17 难就难在,理论上用户想造假的话,操作数据也是可以造假的
所以,估计真像 @canesten 说的,无解
Ricky123
2014-10-29 10:42:27 +08:00
加密d的代码的加密代码也要加密哦
XD
qiayue
2014-10-29 10:43:30 +08:00
@Ricky123 子子孙孙无穷尽也
tabris17
2014-10-29 10:45:34 +08:00
@qiayue 操作数据造假不会有太大影响,无非是按键精灵之类的自动操作,不会导致业务出问题
raincious
2014-10-29 10:50:00 +08:00
@canesten

其实严格说来客户端也无解了,因为数据都是客户端提交的(只是好歹还能加密数据包)。

如果服务端实时性高的话,只能判断用户操作,发现作弊Kick了。

不过直接提交用户得分的话,这个设计确实需要重新思考。
qiayue
2014-10-29 10:58:39 +08:00
@raincious 那就按@tabris17 说的,改成前端提交用户操作数据,后端计算分数
lincanbin
2014-10-29 11:29:35 +08:00
@qiayue 问题就变成了如何判断用户提交的操作数据是真实可靠的?
qiayue
2014-10-29 11:44:42 +08:00
@lincanbin 操作数据会有一定的规律性,造假比较难(但也不是不能造假)
所以只是提高了造假成本而已
akira
2014-10-29 11:54:16 +08:00
没有任何办法可以绝对防止用户作弊的,只能是在一定程度上防止。
前期提交数据的时候随便做个加密凑合着用吧。

个人意见是前期不要浪费时间在这种事情上,专心做好产品吧。。
binux
2014-10-29 12:01:15 +08:00
作为实物游戏,解魔方都可以用机器手开挂。
作为屏幕内的程序无法判断坐在电脑前玩你的游戏的是一个人还是机器人。
justplaymore
2014-10-29 17:40:36 +08:00
为提交数据做个校验散列,散列算法在服务器端实现,这样别人不知道算法的情况下,散列能起到校验作用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/142295

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX