在BillingService模块中,需要修改哪些内容才能提高安全性?

Bil*_*Ape 9 android in-app-billing google-play

BillingService类的注释建议:

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

OK,但是什么必须进行修改?

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

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

Joh*_*ith 7

我现在正在研究这个问题,到目前为止,我的方法如下:

  1. 我正在使用BillingReceiver,Billing Service,PurchaseObserver和ResponseHandler.
  2. 我已将所有Constants移动到我自己的Constants类中,并且所有上述类都包含在我自己的包中.
  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上提供的一些提示.

希望这可以帮助.