一个商城APP项目,后台是Java写的,现在情况是这样:
正常流程: 用户下单-》支付成功-》支付宝回调-》修改订单状态、给用户上级返利。
异常情况:用户下单-》取消支付-》修改订单状态、给用户上级返利。
我想知道,他是怎么做到的,支付宝那边查询了订单,确实是用户超时未支付已经关闭了订单,而且修改订单状态,给用户返利也只有在回调的接口进行,回调参数也验证通过之后才会往下进行。
同问 接口有没有验签 有没有被模仿请求的可能
接口有验签的,修改订单状态和执行返利只有支付回调那里调用,其他地方不会调用的。模仿请求是什么意思啊?
@路边一草鞋: 就是别人能不能抓到你的请求,然后改参数,模仿一个。
规则是啥?有没有时效性?跟当前一些参数有没有关联?
验签的规则合理,一般都不会被黑的
一般是一个密钥加上所有参数的md5值 其中还要包含时间戳,防止请求重放。
@蓝羽code: 昨天记录了日志,现在确定问题是攻击者获取到了未支付的订单编号,而且确定是走的支付回调逻辑,支付宝的回调也能够伪造吗,日志是在验签成功之后,到支付宝查询支付状态,然后记录没有支付的订单号。
现在我们是先验签,验签通过之后在去支付宝那边查询支付状态,确定是支付了之后再走后面的逻辑。
@路边一草鞋: 要看验签逻辑是哪里提供的 如果是支付宝平提供的 他们会给你们个签名验证方法
看你们做没做验证了
如果你们没做验证肯定是会出问题的
我觉得你们接口可能是接到参数没做验证
@蓝羽code: 确定是做了签名验证的,而且签名验证方法用的是支付宝的SDK
取消支付哪里发送了请求?验签没有呢
接口有验签的,修改订单状态和执行返利只有支付回调那里调用,其他地方不会调用的。