google支付被刷问题及服务端订单验证解决方案
2014-07-19 23:47
387 查看
最近在google play上线的应用内支付被人刷了,用户模拟发起了大量的支付请求,并且全部成功支付。搞得我最近茶饭不思。。今天总算是解决了,和大家分享一下。
我们客户端的支付实现步骤是:
1. app端调用google支付
2. 支付成功后,调用 自己服务器的发货接口,当然发货接口是做了签名校验的。
之所以在app端调用发货,是因为google貌似没有提供服务器端直接回调url的地方,所以才给了恶意用户模拟google返回的机会。
一开始我以为是我们自己的发货接口密钥被破解了,但是后来经过app上报,发现客户端是真实的走过了所有的google支付流程,即google的支付sdk真的返回了成功。
由于不清楚是因为google的密钥泄漏还是攻击者用别的方法实现,所以客户端这边已经没有办法确认是安全的了。
好在google是提供了查询订单的接口的: http://developer.android.com/google/play/billing/gp-purchase-status-api.html
实现的流程在文档中已经写的很清楚了,我这里就不赘述了。
判断的方法也很简单:
1. 判断是否购买成功
2. 判断返回 developerPayload 是否与传入的值一致。最好传入订单号,以防止重放攻击。
我们客户端的支付实现步骤是:
1. app端调用google支付
2. 支付成功后,调用 自己服务器的发货接口,当然发货接口是做了签名校验的。
之所以在app端调用发货,是因为google貌似没有提供服务器端直接回调url的地方,所以才给了恶意用户模拟google返回的机会。
一开始我以为是我们自己的发货接口密钥被破解了,但是后来经过app上报,发现客户端是真实的走过了所有的google支付流程,即google的支付sdk真的返回了成功。
由于不清楚是因为google的密钥泄漏还是攻击者用别的方法实现,所以客户端这边已经没有办法确认是安全的了。
好在google是提供了查询订单的接口的: http://developer.android.com/google/play/billing/gp-purchase-status-api.html
实现的流程在文档中已经写的很清楚了,我这里就不赘述了。
判断的方法也很简单:
1. 判断是否购买成功
2. 判断返回 developerPayload 是否与传入的值一致。最好传入订单号,以防止重放攻击。
相关文章推荐
- google支付被刷问题及服务端订单验证解决方案
- google支付服务端订单验证PHP代码
- 铁通、长宽网络支付时“签名失败”问题分析及解决方案 [88222001]验证签名异常:FAIL[20131101100002-142]
- GooglePlay Console 后台配置以及支付订单验证流程
- Google支付订单真伪的验证方式
- ASP.net验证控件详解和按钮点击事件后验证控件的执行顺序问题以及在确认密码框为空,CompareValidator认为是合法的问题的解决方案
- ASP.NET验证控件出现问题后的解决方案
- google 客服。。。 数学问题 与 实际的解决方案。。。
- 解决google地球 google地球无法连接验证服务器或者提示需要安装google插件 的问题
- Silverlight+RIA Service Required验证失效问题的解决方案
- google支付接口被刷以及解决方案
- 移动O2O营销平台-一个集优惠券发布与管理、支付、线下验证为一体的闭环O2O优惠券解决方案平台
- dom4j 的 DTD 验证,以及输出乱码问题解决方案
- 微信支付 该支付域名未获授权,无法发起该笔交易问题解决方案
- 问题:DataGrid的行验证错误始终不清除(消除),解决方案如下
- 解决CSS各种IE各种兼容问题(Google解决方案)
- PADS 9.2使用过程中的问题及解决方案(均通过验证)
- 3.服务端拦截器:验证是否发布成功,以及项目有感叹号问题
- sharePoint2007 Forms 验证登陆 拒绝访问(Access Denied) 相关问题解决方案
- Google App Engine平台下JDOQL查询报异常的问题解决方案