这个Google LVL政策实施是否合理安全?

Ted*_*opp 15 algorithm android android-lvl access-rights google-play

ServerManagedPolicyGoogle在其许可证验证库中提供的默认值依赖于服务器响应来确定许可证重新验证间隔.这导致需要每隔几天重新确认一次,永久性.这不仅对用户造成麻烦,对于长时间没有连接的用户来说,这可能是一个严重的问题.(我们刚刚接到一位用户的询问,该用户预计几周内没有互联网连接,这就是推动这个问题的原因.)

总之,我正在寻找一种能够完成两件事的算法:

  1. 与之相比,大幅降低了连接要求ServerManagedPolicy;
  2. 提供相同级别的反盗版保护.

在回答这个问题时,建议的策略算法是忽略来自Google服务器的响应中提供的时间,而是使用大约一个月的许可有效期,每隔几天尝试一次许可检查(如果延长有效期,收到许可的答复).

虽然这种方法部分地解决了第一个目标,但它仍然要求用户在使用应用程序时每月连接一次,因此它不适用于(至少一个)我们的用户.

以下算法完成了第一个目标,但我不知道第二个目标.任何评论指出该算法的弱点,或建议另一种方法,将是受欢迎的.

  1. 首次运行时,请执行许可检查并在提供完整功能之前坚持许可响应.收到后,设置相对较短的有效期(但比Google Play提供的退款期限长,目前为15分钟).同时注册一个超过几天的宽限期.
  2. 应用程序将在许可证到期后再次开始检查.如果连接失败(飞行模式等),它将一直有效,直到宽限期到期.
  3. 在宽限期到期后,在允许正常的应用程序运行之前,坚持第二个许可响应.
  4. 收到第二个LICENSED响应后,永久启用应用程序的所有功能,再也不用费心检查.
  5. 如果在任何时候收到UNLICENSED响应,则永久禁用完整功能.(当然,用户可以通过删除所有应用数据恢复到第1步.)

附加要点:

  • 建议放弃第一次许可检查,并等待返回期限到期,然后再进行许可检查.坚持第一个LICENSED响应的目的是防止利用漏洞,在许可证检查失败后,用户只需停止应用程序进程,清除应用程序数据,然后重新启动应用程序.(该应用程序即使一次只能使用15分钟也能提供价值.)
  • 坚持第二个LICENSED响应的目的是绕过buy-run-backup-return-restore漏洞.
  • 我不是在问回叫许可证是否是一个好主意(这就是谷歌提供的代替他们弃用的复制保护机制).我也很清楚,没有反盗版保护是万无一失的,谷歌的整个许可机制都可以被规避(在这种情况下,所有关于策略算法设计的问题都是无关紧要的).这个问题的主要问题是与其他政策(如ServerManagedPolicy)相比,上述算法的相对风险(对我们而言)和对用户的好处.

Ale*_*lex 5

在盗版方面,总会有风险,你所做的一切都不会完全阻止它.

与其他风险相反,您可能会使用他们无法使用的应用程序来扰乱您的客户.

我希望从不满意的客户那里得到很多0*的评论,因为它们被禁用,甚至无法使用他们支付的应用程序,而免费获得应用程序的人可能没有中断.当盗版者不间断地观看时,就像购买DVD并让你的脸上充满了版权警告.

购买应用程序时,我会坚持获得许可响应,而不是第二个响应.如果有人可以找到一个响应的方式,他们会发现他们离开了第二个.

编辑:我同意kcoppock购买后20分钟的许可支票会对客户造成最小的干扰并避免您提到的退款错误

  • 一次性批准受到一个非常简单和众所周知的漏洞利用:1)购买应用程序; 2)运行它并获得许可响应; 3)备份你的设备; 4)退回应用程序(在15分钟退款窗口内); 5)从备份中恢复您的应用程序.Voilà - 一个认为已获得许可的未购买应用程序.为了防止这种情况,在返回窗口关闭后必须至少进行一次许可检查.我应该补充一点,问题是提议的策略是否比LVL附带的默认策略(需要每隔几天检查一次,永远存在)有更多的盗版或其他风险. (2认同)