支.付宝收到异步回调后有必要再主动向支.付宝发一个请求确认订单状态吗?

361 天前
 LLaMA
3230 次点击
所在节点    程序员
46 条回复
jaydenhpj
361 天前
如果对异步回调的参数验证了签名,就不需要了。
moult
361 天前
异步回调里面还有一个 notifyId 参数的,建议验签之后,再验证一下 notifyId 即可。
LLaMA
361 天前
补充:一个外包的商城系统有 30 多笔款项对不上,检查日志后发现同步通知接口被多次伪造 method=alipay.trade.wap.pay.return 的请求,研究了 3 天也没找到这是怎么做到的,只能加主动查单了,异步接口在研究有没有必要加
LLaMA
361 天前
@benrezzagmehamed #3 伪造的同步通知请求验签可通过,查不到任何资料这怎么伪造
LLaMA
361 天前
@moult 不验证 notifyId ,只验证订单状态是否是已付款会有什么风险吗
jenlors
361 天前
@benrezzagmehamed 密钥泄露了?
bootvue
361 天前
有内鬼 停止交易
awolf
361 天前
签名也能伪造?确认支付单号都是不一样的?(或者说是全新生成的?)
dem0ns
361 天前
肯定要验证啊,回调只是通知,没收到通知也得定时主动验证
optional
361 天前
异步通知已经是异步请求了,增加一个验证又不会影响你的体验,加。
silypie
361 天前
一般两个都要实现
kcnine
361 天前
多半是代码和密钥都被泄漏了,做做安全检查吧,不然不可能通过签名的
lower
361 天前
我之前接手过一个系统,支付回调里连支付状态是不是 success 都没判断,直接就拿 id 更新订单状态了,😂幸亏财务一直在一笔笔的核对
sujin190
361 天前
@benrezzagmehamed 密钥泄露了这不随便就能弄了
LLaMA
361 天前
@jenlors
@kcnine
@sujin190 ???看的我都怀疑我了,你们真的有接过支.付宝吗?签名用的是支.付宝私钥,商家根本没有获得支.付宝私钥的权限,这怎么泄露?如果是代码里用于验签的支.付宝公钥被偷改了那正常的支付请求我们就收不到了,所以应该不存在这种可能
bestie
361 天前
既然私钥不可能泄漏,那只能是同步通知的处理有问题。如果暂时查不出来就同时接入下异步通知吧,保证业务稳定再慢慢排查代码哪里有漏洞。
Crawping
361 天前
你确认了订单号么? 签名怎么伪造
LLaMA
361 天前
@Crawping 确认了
haha512
361 天前
伪造有难度,不代表不能伪造


比如 订单

return_url=http://xxx.com/notify&out_trade_no=12345&seller=alice&total_fee=100&sign=XXX,

攻击者可以通过修改 return_url 到掌控的地址,如 http://bbb.com/,提交请求:

return_url=http://bbb.com/notify&out_trade_no=12345&seller=alice&total_fee=100&sign=XXX

来获得 return_url 的结构。再伪造以下消息签名后发送给商户,伪造通知

target_url: http://xxx.com/notify

post_data: put_trade_no=12345&seller=alice&total_fee=100&trade_status=SUCCESS&sign=XXX.

商户收到消息后验证签名正确,所有参数均正确,将完成攻击者的订单。而事实上并未进行过任何支付。
haha512
361 天前
在异步通知里更新订单状态,不要在同步通知里更改

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/937373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX