漏洞描述:
应用程序未校验订单数据的取值范围,交易值可为负值。
测试方法:
提交订单时拦截请求,修改订单参数为负数,如商品单价、数量、总价等。
漏洞分析:
通过篡改订单参数,使得订单金额为负值,在使用余额支付时余额反而增加。
漏洞等级:
【高危】:未对数据进行校验,导致业务数据被污染。
修复方案:
1.服务器端在生成交易订单时,商品的价格从数据库中取出,禁止使用客户端发送的商品价格。
2.服务器端对客户端提交的交易数据(如商品ID、商品数量、商品价格等)的取值范围进行校验,将商品ID和商品价格与数据库中的数据对比校验,商品数量为大于零的整型数。
3.服务器端在生成支付订单时,对支付订单中影响支付金额的所有因素(比如商品ID、商品数量、商品价格、订单编号等)进行签名,对客户端提交的支付订单进行校验。