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

js 向后端提交 ajax 请求,但是避免用户模拟 HTTP 上传虚假数据的思路?

  •  
  •   scriptB0y · 58 天前 · 957 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景:

    JS 游戏在游戏结束后上传分数,但是如果用 HTTP 请求的话,用户可以随意 POST 一个分数。

    如果用 JS 加密,server 解密的话,用 Chrome 调试是否也可以随意改写一个值上传上去?

    12 回复  |  直到 2018-12-26 13:48:38 +08:00
        1
    gam2046   58 天前   ♥ 1
    原则上没有办法,只有记录客户端的行为数据,服务端判断是否可行。

    https://www.google.com/recaptcha/admin#list

    可以尝试 v3 版本的 reCaptcha,是完全无侵入性,而且国内可直接使用。
        2
    ByZHkc3   58 天前
    这就是涉及到游戏反作弊的处理里,每次游戏生成一个游戏 id,可以在游戏中途上发数据,post 数据的时候可以依据游戏时间及分数上限来判断用户是否作弊
        3
    nfroot   58 天前
    用户端发来的任何数据都不可信任,都是可以伪造的,服务器端必须有机制去确认它合不合规,每隔一个时间发一个数据确认也是一个方式。


    但是。。。。客户端也可以伪造。


    所以重要的东西都是服务器去做运算而不是客户端。

    一般都是通过行为去判断。
        4
    TomVista   58 天前
    ```
    function(){
    ...
    }()
    ```
        5
    GDC   58 天前 via iPhone
    无解,分数在服务端计算
        6
    hongshaoyuancn   57 天前
    最近也在想 前端根据后端提供的密钥加上时间戳进行签名 保证签名唯一性的情况下 将数据带入后端校验唯一签名通过 其他的全部拒绝 准备试试呢。。。。。。。。。。
        7
    maichael   57 天前
    @hongshaoyuancn #6 只要你前端能做的,别人也可以模拟这一过程。
        8
    maichael   57 天前   ♥ 1
    可以看下之前 LeanCloud 做小游戏的思路: https://zhuanlan.zhihu.com/p/52864161
        9
    t6attack   57 天前
    如果解密分析的难度过大,控制台破不了、抓包篡改数据破不了。。那我干脆用 CE 修改器直接改内存。
        10
    Mazexal   57 天前
    想想之前微信跳一跳刷分数的, 直接通过接口更新直接就炸了
        11
    scriptB0y   57 天前
    @gam2046 这个我想过,跟你想法一样。客户端的游戏我用一种 hash 算法计算出得出:游戏时间、游戏操作 最后得到的游戏分数,然后客户端计算一个 hash 值带上。验证如 P 问题和 NP 问题一样,验证这个 hash 值很快。

    @hongshaoyuancn 客户端既然拿到了秘钥,那用户总看得见啊,大不了用浏览器把你的加密算法跑一下也是正确的。

    @Mazexal 微信是怎么做的呢?不暴露客户端代码 + 通过加密的 TCP 传输防止抓包?
        12
    scriptB0y   57 天前
    @maichael 谢谢 看了一下也是记录中途游戏参数+参数校验。这个摸透了校验规则也是可以伪造 “稍微高于正常水平”的游戏数据的,至于离线分析,也是看游戏数据是否合理吧。感觉没有本质上解决这个问题呢。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3260 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 04:39 · PVG 12:39 · LAX 20:39 · JFK 23:39
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1