在 BillingService 模块中,需要修改什么来增加安全性? [英] In the BillingService module, what needs to be modified to increase security?

查看:12
本文介绍了在 BillingService 模块中,需要修改什么来增加安全性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

BillingService 类的注释建议:

您应该在使用之前修改和混淆此代码.

You should modify and obfuscate this code before using it.

好的,但是什么必须修改?

类名?用于记录的 TAG?方法名称和数据成员?逻辑和程序流程本身?其他?

The class name? The TAG used for logging? Method names and data members? The logic and program flow itself? Other?

换句话说,我可以理解混淆的必要性,但是我如何才能在不从头重写所有内容的情况下实现建议(可能存在比不修改任何内容更糟糕的错误)?

In other words, I can understand the need for obfuscation, but how can I get away with implementing the recommendation without rewriting everything from scratch (potentially with bugs that are worse than not modifying anything)?

推荐答案

我现在正在做这个,到目前为止,我的方法如下:

I'm working on this at this moment and my approach, so far, is as follows:

  1. 我正在使用 BillingReceiver、Billing Service、PurchaseObserver 和 ResponseHandler.
  2. 我已将所有常量移至我自己的常量类中,并且所有上述类都包含在我自己的包中.
  3. 我已经取消了 PurchaseDatabase 类,并将它的一部分集成到我自己的 SQLite 数据库、DBAdapter 和数据访问类中.
  4. 我已将 CatalogEntry 更改为我自己的模型对象,我的 UI 将与示例完全不同,例如产品项目的 RadioButton 组而不是 Spinner(我只有 4 个).
  5. 它在 Security 类中说为了实现安全,所有这些代码都应该在与应用程序通信的服务器上实现".我很幸运,我的应用程序无论如何都必须联系我的服务器,所以我将在服务器上实施这些安全措施,并且我将自己验证传递给服务器的购买信息.我希望使用 SSL 保护这部分通信,并且我已经需要存储在我的服务器上的先前用户名/密码(散列和加盐).
  6. 我正在删除任何其他我不使用的多余代码,例如有效载荷编辑.
  7. 有些方法的签名中有 5 或 6 个参数,例如onPurchasestateChanged() - 我正在考虑将这些组合成一个包装对象(但还没有这样做).
  8. 我正在缓慢而彻底地测试它,以便我了解发生了什么,并遵循建议.我首先使用了完整的样本来确保它有效并测试了静态响应.然后我开始进行自己的更改,同时仍在进行静态测试.我仍在使用静态响应进行测试,我将按照消息流来了解正在进行的交换.对此感到满意后,我将使用自己的产品 ID 进行测试,并尝试对数据及其安全性感到满意.
  9. 我认为 developerPayload 字符串也可以被签名和加密,当返回到我的服务器时,解密并检查完整性.
  10. 最后,我将使用 ProGuard 混淆代码,并遵循 StackOverflow 上提供的一些提示.

希望这会有所帮助.

这篇关于在 BillingService 模块中,需要修改什么来增加安全性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆