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

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


比如 订单

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
2023-05-05 01:36:41 +08:00
在异步通知里更新订单状态,不要在同步通知里更改

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

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

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

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

© 2021 V2EX