V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
viator42
V2EX  ›  程序员

公司的商城 App 被人一分钱下单,不知道他是怎么办到的

  •  
  •   viator42 · 2016-09-27 13:10:26 +08:00 via Android · 19023 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    感觉是被修改二次打包了
    第 1 条附言  ·  2016-09-27 13:58:00 +08:00
    最大的问题还是商品的价格由客户端计算,原价减优惠券减积分得出最终的价格.服务端想校验也不知道商品应该是多少钱所以就变成这样了.还好数据量不大有人工校验订单
    求 App 名的就歇歇吧,看热闹的不嫌事大
    191 条回复    2017-06-07 20:33:59 +08:00
    1  2  
    konakona
        101
    konakona  
       2016-09-27 15:50:45 +08:00
    lz 不会是后端吧。...
    后端不用验证?天啊...
    qqmishi
        102
    qqmishi  
       2016-09-27 15:51:03 +08:00 via Android
    永远不要相信客户端数据,服务端必须验证。

    你根本想象不到撸羊毛群里有多少人整天等着用 Fiddler 改数据。
    VRYANG
        103
    VRYANG  
       2016-09-27 15:54:12 +08:00
    哈哈... 看来大神多... 没事,坑趟多了就好了。我现在都想把客户端只做显示用,所有能不要的逻辑都撤掉..
    viator42
        104
    viator42  
    OP
       2016-09-27 15:58:24 +08:00
    @konakona 我不是后端,但似乎干了后端的活
    ihuotui
        105
    ihuotui  
       2016-09-27 15:59:54 +08:00
    @VRYANG 本来就是,业务都是后端处理,前端只是显示。
    MountainRain
        106
    MountainRain  
       2016-09-27 16:00:03 +08:00   ❤️ 1
    就这种水平还要做 APP 啊。。。。。。
    konakona
        107
    konakona  
       2016-09-27 16:02:08 +08:00
    @viator42 你是前端?
    corona
        108
    corona  
       2016-09-27 16:03:15 +08:00
    后端不做校验,可以有多种方式修改价格
    VRYANG
        109
    VRYANG  
       2016-09-27 16:04:08 +08:00
    @ihuotui 技术水平参差不齐啊,产品也不懂...剩下的只有坑...
    explon
        110
    explon  
       2016-09-27 16:05:06 +08:00
    神逻辑,怎么不把用户验证也打包到 APP 里面去
    viator42
        111
    viator42  
    OP
       2016-09-27 16:07:48 +08:00
    @konakona 我是做 App 的
    luoyjx
        112
    luoyjx  
       2016-09-27 16:07:59 +08:00
    那你肯定是客户端传的什么价格你就用什么价格了,前端的价格只是用来显示的,顶多后端允许订单号、商品 id 、商品数量这类数据,服务端再自己计算一次价格
    falcon05
        113
    falcon05  
       2016-09-27 16:16:37 +08:00 via iPhone
    以前我就职的一家公司也是这样,买了一套 o2o 系统二次开发,也是 TM 一分钱购买,害我修改了大半天,吓死人
    xiao6ye
        114
    xiao6ye  
       2016-09-27 16:18:55 +08:00
    @viator42 这后端懒到家了
    v23ex
        115
    v23ex  
       2016-09-27 16:20:53 +08:00
    LOW
    ijustdo
        116
    ijustdo  
       2016-09-27 16:24:02 +08:00
    找台笔记本 设置 wifi 代理 然后手机链接这个 wifi 然后 笔记本对流量抓包

    撒分析不出来 偷懒的后台 然后 后台前台数据不加密 还有直接用 http/https 协议 api 的 ...

    你们懂的....

    连微信都被抓包然后出来一堆微信机器人 你们后台咋这么自信呢 ....
    issues
        117
    issues  
       2016-09-27 16:26:37 +08:00
    干脆叫一分钱夺宝
    kevincai100
        118
    kevincai100  
       2016-09-27 16:38:36 +08:00
    楼主,请谷哥 FD 大法
    PureDark
        119
    PureDark  
       2016-09-27 16:41:58 +08:00
    后台不验证!价格由客户端传进来!赶紧报告公司把这个后端开了、
    写接口时,要抱着这个接口是公开透明的,所有人都知道的想法来写,要写到就算所有人都知道接口,也没有办法钻漏洞

    题外话
    @ccloli 学弟最近怎么点进哪都能看到你
    ArthurTsang
        120
    ArthurTsang  
       2016-09-27 16:43:47 +08:00
    明显不应该客户端去计算,同样想起了上次客户端生成订单号的帖子
    acvrock
        121
    acvrock  
       2016-09-27 16:46:59 +08:00
    哈哈,以前有人接入支付宝就是在手机端这么搞的,后来还在烦恼怎么生成唯一的订单号
    wclebb
        122
    wclebb  
       2016-09-27 16:59:26 +08:00 via iPhone
    前一阵子被别人要你刚加入什么情报群,好奇进去了,一般都会禁言+群发各种一分钱,网上可以搜一分钱改什么的软件。貌似已经存在很久了,所以这个群主要是分享福利和收钱发一分钱订单之类的(偶尔有免费),经常看见一分钱或一块钱买几百手机或商品,偶尔发发优惠券。

    有一次觉得像真的,联系,要求付 240 ,我就付了,然后发来 12 日领取苹果手机,我就知道被骗了,质疑后被踢开。

    从此学乖了,当交了智商税,任何提供的 QQ 号手机号一律社工库。当然我也举报了,腾讯理所当然判定我没有证据(最近十条,有证据在最上面……),过一阵子后腾讯又发来通知我这号确定诈骗。
    qleroooo
        123
    qleroooo  
       2016-09-27 17:00:11 +08:00
    android 如果代码混淆过的话,想看懂的话还是比较麻烦的吧!可能被抓包了吧
    wclebb
        124
    wclebb  
       2016-09-27 17:02:20 +08:00 via iPhone
    @kevincai100 就是这个,估计已经成规模了,任何有一分钱的漏洞,都会群发到某个群,然后大家都会想办法去利用,最常见的是话费充值和商品送货,话费充值是他们最爱,因为无法追踪。地址起码还能知道在哪里。
    x86
        125
    x86  
       2016-09-27 17:03:37 +08:00
    价格您说的算...2333
    yilin101
        126
    yilin101  
       2016-09-27 17:10:30 +08:00
    楼主是微擎 或者微赞吗?
    realpg
        127
    realpg  
       2016-09-27 17:12:15 +08:00
    233333

    都达不到普通工程师的水准就开始做涉及金钱的交易系统
    dassh
        128
    dassh  
       2016-09-27 17:14:26 +08:00
    试了下,还真可以。。建议赶紧停服务器,取消无效订单
    zacard
        129
    zacard  
       2016-09-27 17:16:59 +08:00
    后端不校验。这 app 都敢上线。。。
    austinchou0126
        130
    austinchou0126  
       2016-09-27 17:17:07 +08:00
    "看热闹的不嫌事大"
    请问这种态度是来请教大家的么 hhhh
    reus
        131
    reus  
       2016-09-27 17:31:31 +08:00
    @w99wen 毫无意义。签名本身就是客户端提交的,签名也能伪造,毫无意义。
    allce231
        132
    allce231  
       2016-09-27 17:33:00 +08:00
    商品的价格由客户端计算?

    你们真牛逼!!!!
    panlilu
        133
    panlilu  
       2016-09-27 17:42:00 +08:00
    我就是来歇歇的 2333
    JoyNeop
        134
    JoyNeop  
       2016-09-27 17:45:41 +08:00
    说下 app 名字吧,大家一起帮楼主 debug (手动斜眼
    goofansu
        135
    goofansu  
       2016-09-27 17:45:49 +08:00
    价格居然客户端算。。怎么想的
    ccloli
        136
    ccloli  
       2016-09-27 17:50:06 +08:00 via Android
    @domty @shiny 额,我没说清楚,那个应该是一个像众筹一样的平台,填负数就直接入账了 233

    @PureDark 我也想说 how old are you ,前几天在 coolapk 上就见到你了,还想截屏问是不是你来着😂
    robinshi2010
        137
    robinshi2010  
       2016-09-27 17:51:04 +08:00
    我是吃瓜群众。
    konakona
        138
    konakona  
       2016-09-27 17:52:47 +08:00
    @viator42 那貌似跟你没有多大关系。
    APP 里的计算就算再多、再复杂,也只是避免了与 API 的通信以提供更好的用户体验而已。
    进入数据库的东西必须是后端经过验证、二次计算后的,不能直接是用户的。
    你们的后端也是奇葩。
    killerv
        139
    killerv  
       2016-09-27 17:57:24 +08:00
    刚才测试了一下,还可以正常下单,话说怎么退单啊……
    Light3
        140
    Light3  
       2016-09-27 17:57:25 +08:00
    这个东西 肯定是后端给价格 别前端给价格 这样空子 抓包就能钻..
    bugmenein
        141
    bugmenein  
       2016-09-27 18:11:13 +08:00
    前端验证没有任何问题,都是后端不做二次验证的锅;另外这种后端属于没救的类型,直接开了;否则以后就是你们公司没救了。
    lcsoft
        142
    lcsoft  
       2016-09-27 18:11:22 +08:00
    按理来说 商品价格之类的信息、优惠信息都应该存在后端数据库里吧, APP 下单只是把商品 ID 、优惠 ID 之类的发给后端,后端再从数据库取出数据,然后生成订单。
    awolfly9
        143
    awolfly9  
       2016-09-27 18:23:49 +08:00
    @all 求分享一段可以一分钱下单的代码,让我们也享受享受福利
    iyangyuan
        144
    iyangyuan  
       2016-09-27 18:34:53 +08:00 via iPhone
    不知道说什么好了,就当做是学费吧
    YvesX
        145
    YvesX  
       2016-09-27 18:41:39 +08:00
    “服务端想校验也不知道商品应该是多少钱”

    ……迷之设计。
    qinxi
        146
    qinxi  
       2016-09-27 18:46:30 +08:00
    你家后端现在情绪稳定吗?
    ylcx123
        147
    ylcx123  
       2016-09-27 18:49:37 +08:00
    ylcx123
        148
    ylcx123  
       2016-09-27 18:51:09 +08:00
    @ylcx123 https://i.bohan.co/EBMDD2M7.jpg
    发图真麻烦啦。我试了下,啥校验都没有!
    LokiSharp
        149
    LokiSharp  
       2016-09-27 19:07:06 +08:00
    啊咧咧, Loki 可以帮你调试客户端的
    cocalrush
        150
    cocalrush  
       2016-09-27 19:15:42 +08:00 via Android
    不需要重新打包 拦截请求就可以了……
    gkiwi
        151
    gkiwi  
       2016-09-27 19:16:12 +08:00
    为什么后端不知道怎么校验。。
    DingSoung
        152
    DingSoung  
       2016-09-27 20:01:13 +08:00
    不要相信前端的数据!
    不要相信移动端的数据!
    不要相信任何端传过来的数据!
    DingSoung
        153
    DingSoung  
       2016-09-27 20:02:46 +08:00
    单价,钱,支付状态,这些都要后端自己去算和验证,不能用传过来的数据!
    DingSoung
        154
    DingSoung  
       2016-09-27 20:05:51 +08:00
    @akring 压根不需要什么 root 越狱,用代理抓个包,把接口弄出来,分分钟把公司刷破产
    eddiechen
        155
    eddiechen  
       2016-09-27 23:01:52 +08:00
    后端不做校验,这后端也是够牛。。。
    Lullaby
        156
    Lullaby  
       2016-09-27 23:21:17 +08:00
    商品的价格由客户端计算 这就是最大的问题
    SlipStupig
        157
    SlipStupig  
       2016-09-27 23:46:45 +08:00
    请把 app 的名字告诉我,我来帮助你更好的修改 /duge
    irainsoft
        158
    irainsoft  
       2016-09-28 00:35:20 +08:00
    整个设计就尼玛有问题....上面无数人都讲了

    现在直接数据传输强制 HTTPS 然后加后端验证吧:doge:
    peneazy
        159
    peneazy  
       2016-09-28 06:56:59 +08:00
    Fiddler 记一下
    w99wen
        160
    w99wen  
       2016-09-28 08:58:34 +08:00
    @reus
    恩。
    彻底防止客户端的订单请求被篡改基本不可能,也只能是生成的订单最大限度防止篡改,然后服务端验证订单信息无误,返回支付的 url ,再用支付链接请求服务端进行关键的支付过程。这样就把最后的付款链接的创建逻辑隐藏在服务器端。
    客户端能做的也只能是最大限度的防止订单信息被篡改。哎,密钥保存真是痛点,哪怕是 iOS 也是不是那么靠谱的。
    HarveyDent
        161
    HarveyDent  
       2016-09-28 09:00:06 +08:00
    谁叫你们在技术上省成本,继续啊。
    peinhu
        162
    peinhu  
       2016-09-28 09:07:48 +08:00
    商品的价格由客户端计算 666
    653513754
        163
    653513754  
       2016-09-28 09:16:52 +08:00
    上次操盘手就是可以 1 分钱冲几百万,然后可以提现 及时到账 23333333
    lianxiaoyi
        164
    lianxiaoyi  
       2016-09-28 09:31:27 +08:00
    很明显是服务端的锅 。。。。客户端所有的数据都是服务端给的。。。难道用户积分不是服务端给的吗???难道用户优惠卷信息不是服务端给的么?????无法验证。。。。这是今天看到的最好笑的笑话。。。。。
    hlh3727138
        165
    hlh3727138  
       2016-09-28 09:43:53 +08:00
    我靠 刚刚我去看了下我第一次工作写的代码 也是一个模拟商城的 价格也是从前端传过去的 后端没校验 他们还上线了 心里好慌怎么办。。。(主要这个功能前后端都是我一个人写的)
    Ahri
        166
    Ahri  
       2016-09-28 09:48:37 +08:00
    666
    zichen0422
        167
    zichen0422  
       2016-09-28 10:01:18 +08:00
    哈哈哈, 我公司也出现过这样的问题.
    zichen0422
        168
    zichen0422  
       2016-09-28 10:01:38 +08:00
    后端的锅, 后端不做校验, 作死
    jasonding
        169
    jasonding  
       2016-09-28 10:06:42 +08:00
    表示看了楼主的基本介绍,一分钱下单再简单不过了好么。。。客户端计算后提交,而且服务端不校验。。。。心真大
    sobigfish
        170
    sobigfish  
       2016-09-28 10:43:22 +08:00
    lz 应该问问后端 有什么价格是前端能算 后端不能算的。。。
    那你应该仔细检查下许多应该后端做而不是前端做的东西
    !!!!
    订单号、 优惠券的使用、价格、支付传参数到支付 API 的加密、 支付结果检查、 订单状态、 退款、
    个人资料修改(有没有平行权限漏洞,比如使用了前端传的 userId )
    fjzjk
        171
    fjzjk  
       2016-09-28 10:53:51 +08:00
    怎么可能让客户端去处理价格的问题,你们的产品在干什么
    t40462860
        172
    t40462860  
       2016-09-28 11:38:21 +08:00
    听过 fiddler 吗?
    Yvette
        173
    Yvette  
       2016-09-28 11:52:15 +08:00
    这都可以上线?
    xiaonengshou
        174
    xiaonengshou  
       2016-09-28 11:55:17 +08:00
    想了想,在开发范畴这种事还是客户端的工程师责任比较大。
    josephok
        175
    josephok  
       2016-09-28 12:05:04 +08:00
    验证什么???
    听到这个就感觉悬了....
    tumbzzc
        176
    tumbzzc  
       2016-09-28 13:40:33 +08:00
    因为他们是没有公德心的 13 岁小神童
    hl
        177
    hl  
       2016-09-28 15:48:40 +08:00
    服务端要有逻辑做 double check ,不是提交的时候做 double check ,而是在订单系统里做。服务端对用户订单做展示的时候二次过滤,凡是价格上与数据库里的比对不对的,根本不给客户做展示,就算有漏洞刷了一分钱订单,这个和数据库里的商品登记对应不上,也是不让用户能看到这订单的,这样给研发的很大的空间做修复。当然这里面价格比对要考虑到折扣,优惠活动这些条件。
    yongSir
        178
    yongSir  
       2016-09-28 16:14:46 +08:00
    支付上
    绝对不能相信客户端的验证
    zohan
        179
    zohan  
       2016-09-28 18:53:18 +08:00
    @xiaonengshou 带节奏我还是服你
    xiaonengshou
        180
    xiaonengshou  
       2016-09-28 21:26:18 +08:00
    @zohan 遇到这样问题,客户端要去撕逼。
    zohan
        181
    zohan  
       2016-09-29 09:23:17 +08:00
    @xiaonengshou 这就尴尬了
    icris
        182
    icris  
       2016-09-29 09:28:53 +08:00
    不用改逻辑,正常下单正常支付不给发货,等两天封号,怎么说也赚了一分钱,运气好还能赚它一块钱呢
    jianghu521
        183
    jianghu521  
       2016-09-29 10:20:09 +08:00
    https 啊, 这种优惠, 价格 应该后台验证
    jianghu521
        184
    jianghu521  
       2016-09-29 10:20:39 +08:00
    二次打包, 你们没有代码加固或者混淆吗
    iMono
        185
    iMono  
       2016-09-29 11:15:37 +08:00
    这。。。。。。。。。。。。。。。。后台。。。 233333333333
    julyclyde
        186
    julyclyde  
       2016-09-29 11:44:07 +08:00
    不是前后的问题
    是压根就不应该允许客户提交单价这个数据
    5177748
        187
    5177748  
       2016-09-29 16:03:06 +08:00
    感觉是赚吧大神出手了。。。。。。
    ylcx123
        188
    ylcx123  
       2016-11-22 10:30:09 +08:00
    @viator42 我说,我测试了一笔后,都一个多月了,你们是即不退款也不发货?
    而且你们的 Android app 还没地方申请退款,求还钱
    viator42
        189
    viator42  
    OP
       2016-11-22 10:46:01 +08:00
    @ylcx123 呃,我就是个码代码的,找我退款也没卯用.这个是不出外地的,发货是别想了.退款的话,你直接打电话吧
    ylcx123
        190
    ylcx123  
       2016-11-22 12:37:00 +08:00
    @viator42 早知道就用一分钱测了。 app 居然连申请退款功能都没有
    voocel
        191
    voocel  
       2017-06-07 20:33:59 +08:00 via Android
    @hlh3727138 这下慌了吧
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2813 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:35 · PVG 22:35 · LAX 06:35 · JFK 09:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.