【昆区】点餐小程序能改价?API越权测试与订单风控

①【项目背景】9块9的套餐,卖出去七百多份

昆区一家快餐连锁,小程序上线三个月,日订单四百多。财务对账发现「9.9元套餐」卖了七百多份,菜单标价29.9,库存只备了两百份的料,订单集中在凌晨两点到四点。老板以为是bug。我抓几个请求包,五分钟就明白:下单接口把价格放客户端传,服务端只校验商品ID和数量。改包工具把price从29.9改成9.9,服务端照单全收。这不是bug,是参数篡改。

②【咨询设计】先做接口测绘,再谈修

很多同行上来拿扫描器扫一遍,一堆中低危,真正要命的逻辑漏洞反而看不见。小程序核心风险在业务接口:价格、数量、优惠券、积分、退款、门店范围。我用Burp加手机代理抓全部请求,按功能分类一百三十七个接口,逐个看三点:请求里有没有价格、折扣、门店ID这类该服务端决定的字段;改orderId能不能看别人订单;优惠券并发能不能重复用。结果不乐观:价格可篡改;订单详情用自增ID,改数字就能看别人手机号和地址;券核销没幂等,并发能扣两次。

③【施工规划】价格必须服务端算

修复三层。接口重构:下单只传商品ID、规格、数量、门店ID,价格服务端查库实时算,客户端字段直接丢弃;前端改调「试算」接口取价。订单ID换UUID加签名,详情校验归属,越权返回404而非403,避免泄露订单是否存在。优惠券核销用Redis SETNX加过期时间做分布式锁,同一用户同一券只成功一次;支付回调验签并比对金额,不一致直接拒。风控规则:同账号十分钟超五单、同IP一小时超二十单、成交价低于底价80%,转人工审核。

④【安全补丁】一半在服务端,一半在配置

AppSecret硬编码在前端,反编译就能拿,等于把微信接口钥匙给别人;云开发数据库权限设成「所有用户可读写」,拿个小程序账号就能读全表;后台登录无验证码、无失败锁定。整改:Secret挪服务端,前端只用code换session;数据库改「仅创建者可读写」,管理端走云函数;登录加图形验证码、五次锁定十分钟、强制双因素;所有接口限频单IP每分钟六十次;日志接WAF,盯异常价格、频次、地域。

⑤【验收交付】拿改包工具再打一遍

Burp重放:改价返回「价格已更新,请刷新」,实际按29.9结算;改orderId返回404;同一张券并发十次成功一次;伪造回调金额验签失败。ZAP被动扫描无高危。历史订单全量跑规则,筛出异常83笔、涉及2100元,交财务。给开发培训两小时,讲三条:客户端不可信、价格服务端算、越权校验归属。

⑥【售后承诺】上线不是终点

小程序改版频繁,加一个功能可能带一个新漏洞。每次大版本上线前做接口回归,重点测价格、优惠券、退款;每季度渗透一次,出报告跟踪修复。真被打了2小时响应,先止血再溯源,昆区可上门。热线17704868686。

【不舍昼夜技术 · 包头IT全生命周期服务】
业务全闭环:咨询规划、方案设计、工程实施、竣工验收、维保售后。
咱能干的:包头修电脑/装监控/拉网线/做系统/救数据/办软件/卖耗材。
技术范畴:5G通信、大数据服务、信息系统集成、网络安全、商用密码、平面设计。
服务区域:昆区、青山区、九原区、东河区、高新区等包头全境,随叫随到。
技术热线:17704868686(本地专业团队,不舍昼夜为您守候!)

上一篇 【青山区】老服务器三天两头死机?主板电容ESR检测与更换
下一篇 11月03日,星期二, 内蒙小杨每天60秒读懂全世界!