APP端赛事商品下单并发场景下导致优惠券可以重复使用多次的逻辑漏洞
正常的业务逻辑:
比如p18724289520用户领取了一张优惠券,查询优惠券id为115:
通过前端界面操作下单,下单中使用优惠券抵消金额
正常的业务逻辑如下:手工测试结果
可以看到和优惠券id绑定的那个订单id确实是900
在高并发条件下:
首先查看用户p15794234032的优惠券:该用户只领过一次优惠券
但是这个用户的订单都使用了优惠券:
相当于一个优惠券被使用了多次:
查看用户信息和和领取的优惠券id
操作方法:
先用一个用户领取优惠券,获取未使用的优惠券id
然后开启lr多线程压测
注意需要用同一个用户,多线程同时登陆
就会出现:
为了更快的产生订单,采用session登陆,不用登陆接口
发现这种场景问题重现不了
必须使用一个用户,多个线程并发测试:
通过场景中,这个优惠券id生成了5个订单:
总共5个订单:
所以针对这种漏洞,其实场景设计还是很重要,看出来了lr的并发测试的重要性
作者:Agoly 出处:https://www.cnblogs.com/qmfsun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |