Android上应用程序内购买的唯一字符串

Android上应用程序内购买的唯一字符串,android,in-app-purchase,Android,In App Purchase,在这项建议中: 安全建议:传入一个 帮助应用程序识别进行购买的用户,以便 您可以在以后验证这是一次合法的购买 用户。对于耗材,您可以使用随机生成的字符串, 但对于非消耗品,您应该使用一个字符串 标识用户 生成此字符串的最佳做法是什么?当应用程序独立运行时,最好的方法是 使用模糊的Google Play LVL用户id,在分隔符之后 添加一个安全的随机信息(又名nonce),并根据您的需要 您可以添加其他识别信息,例如时间点 这样,你可以 关联LVL和IAB信息和 IAB服务响应比没有non

在这项建议中:

安全建议:传入一个 帮助应用程序识别进行购买的用户,以便 您可以在以后验证这是一次合法的购买 用户。对于耗材,您可以使用随机生成的字符串, 但对于非消耗品,您应该使用一个字符串 标识用户


生成此字符串的最佳做法是什么?

当应用程序独立运行时,最好的方法是

  • 使用模糊的Google Play LVL用户id,在分隔符之后
  • 添加一个安全的随机信息(又名nonce),并根据您的需要
  • 您可以添加其他识别信息,例如时间点
这样,你可以

  • 关联LVL和IAB信息和
  • IAB服务响应比没有nonce时更安全
以下漏洞仍然存在:

  • 因为检查原则上可以在反向工程后被覆盖
  • 由于IAB nonce是在创建购买意图时设置的(而不是根据有效性请求本身),因此无法验证您得到的响应是否来自重播攻击
  • 这是最新的,所以甚至不能保证你会得到最新的信息;如果设备处于脱机状态,或者服务决定不需要立即重新验证缓存信息的有效性,则服务将以静默方式将缓存信息传递给应用程序

进一步提高安全性的唯一方法是

对不起,我不完全理解答案。我们是在谈论应用内购买吗?LVL与应用内购买有什么关系?@mneri我建议将LVL信息用于IAB开发者有效负载。此外,我还比较了IAB安全性和LVL安全性。如果您不使用LVL,那么您就不需要将LVL和IAB信息关联起来,所以不要将LVL用户信息用于IAB开发者负载。