我目前正在实施 Android 应用内支付,我想知道应该注意哪些攻击媒介。
我有一个简单的应用程序来查看服务器生成的内容。我想允许用户在应用内购买额外的访问权限,并想知道如何将成功的交易传达给服务器。
快速总结 Android 应用内支付的工作原理:
- 该应用程序将用户发送到 Android Market 并购买产品
- 交易完成时,应用程序会收到市场通知。
- 该应用程序使用 nonce 请求交易信息。
- Google 会向应用程序发送包含交易记录的响应,重复随机数,并使用开发人员特定的私钥进行签名。
- 该应用程序可以使用随机数和签名(+ 公钥)检查数据。
- [更新]:Android 事务总是包含时间戳,我的应用添加了一个 GUID 来识别客户端。(两者都在签署的交易记录中)
更多信息在这里:http: //developer.android.com/guide/market/billing/index.html
我目前的计划是将完整的交易记录发送到服务器,并检查服务器上的公钥。
我有一些问题:
- 我的计划本身就存在缺陷吗?
- 是否最好也生成和检查 nonce 服务器端?为什么仍然使用随机数?
- 与服务器通信时是否有必要(最好)使用 HTTPS?
我不保护私人或绝密数据,但我不想让攻击者容易。