V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qiayue
V2EX  ›  问与答

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

  •  
  •   qiayue · 2014-10-29 10:33:36 +08:00 · 4863 次点击
    这是一个创建于 3706 天前的主题,其中的信息可能已经有所发展或是发生改变。
    14 条回复    2014-10-29 17:40:36 +08:00
    canesten
        1
    canesten  
       2014-10-29 10:35:03 +08:00   ❤️ 1
    WEB的话,无解。
    tabris17
        2
    tabris17  
       2014-10-29 10:39:44 +08:00   ❤️ 1
    把逻辑验证放到服务器进行,客户端只提交用户操作数据
    xidianlz
        3
    xidianlz  
       2014-10-29 10:40:12 +08:00   ❤️ 1
    加密后提交把 而且加密的代码也要加密哦
    qiayue
        4
    qiayue  
    OP
       2014-10-29 10:41:46 +08:00
    @tabris17 难就难在,理论上用户想造假的话,操作数据也是可以造假的
    所以,估计真像 @canesten 说的,无解
    Ricky123
        5
    Ricky123  
       2014-10-29 10:42:27 +08:00   ❤️ 1
    加密d的代码的加密代码也要加密哦
    XD
    qiayue
        6
    qiayue  
    OP
       2014-10-29 10:43:30 +08:00
    @Ricky123 子子孙孙无穷尽也
    tabris17
        7
    tabris17  
       2014-10-29 10:45:34 +08:00   ❤️ 1
    @qiayue 操作数据造假不会有太大影响,无非是按键精灵之类的自动操作,不会导致业务出问题
    raincious
        8
    raincious  
       2014-10-29 10:50:00 +08:00   ❤️ 1
    @canesten

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

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

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

    个人意见是前期不要浪费时间在这种事情上,专心做好产品吧。。
    binux
        13
    binux  
       2014-10-29 12:01:15 +08:00   ❤️ 1
    作为实物游戏,解魔方都可以用机器手开挂。
    作为屏幕内的程序无法判断坐在电脑前玩你的游戏的是一个人还是机器人。
    justplaymore
        14
    justplaymore  
       2014-10-29 17:40:36 +08:00   ❤️ 1
    为提交数据做个校验散列,散列算法在服务器端实现,这样别人不知道算法的情况下,散列能起到校验作用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2650 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:09 · PVG 18:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.