Google在其License Verification Library中提供的默认ServerManagedPolicy
依赖于服务器响应来确定许可证重新验证时间间隔。这导致需要每隔几天重新验证一次,永久性的。这不仅对用户造成滋扰,对于长时间没有连接的用户而言,这可能是一个严重的问题。 (我们刚刚从谁希望是没有互联网连接了几个星期的用户,这是什么促使这个问题的询问)这个Google LVL策略实施是否合理安全?
总之,我正在寻找一种算法,将完成两件事情:
- 与
ServerManagedPolicy
相比,大大降低了连接要求; - 提供了相同级别的反盗版保护。
在回答this question建议的策略算法忽略从谷歌的服务器的响应提供的时间,而不是使用的许可到期时间大约一个月,有许可证检查被每隔几天试图(以如果收到LICENSED响应,则延长到期期限)。
虽然这种方法部分解决了第一个目标,但它仍然要求用户每月在使用应用程序时连接一次,因此它不适用于(至少一个)用户。
以下算法完成第一个目标,但我不知道第二个目标。任何意见指出这种算法的弱点,或对另一种方法的建议,将受到欢迎。
- 第一次运行时,请在执行许可检查并坚持授权响应之前提供全部功能。收到后,请设置较短的到期期限(但超过Google Play提供的退款期限,目前为15分钟)。还要注册几天后的宽限期。
- 该应用程序将在许可证到期后再次开始检查。如果连接失败(飞行模式等),它将一直运行到宽限期到期。
- 宽限期到期后,在允许正常应用运行之前,坚持第二次获得许可响应。
- 收到第二个LICENSED响应后,永久启用应用程序的所有功能,并且再也不用再检查。
- 如果在任何时候收到UNLICENSED响应,则永久禁用完整功能。 (用户可以,当然,还原通过删除所有的应用程序的数据到步骤1。)
附加点:
- 有人建议放弃所述第一许可检查,并等待直到期满执行许可证检查前的返回期限。坚持第一个LICENSED响应的目的是为了防止在许可证检查失败后用户简单地停止应用程序进程,清除应用程序数据并重新启动应用程序。 (即使每次只能使用15分钟,该应用程序也能提供价值。)
- 坚持第二个许可响应的目的是解决buy-run-backup-return-restore攻击。
- 我不是问回拨许可证检查是否是个好主意(这是Google提供的代替他们不赞成使用的版权保护机制)。我也很清楚,没有反盗版保护是万无一失的,Google的整个许可机制可以被规避(在这种情况下,有关策略算法设计的所有问题都是无关紧要的)。这个问题的要点是与其他策略(例如
ServerManagedPolicy
)相比,上述算法对用户的相对风险(对我们)和对用户的好处。
从“无形”转变退款虫“购买,还需要验证”到“购买,不再需要验证”有问题。只需在某些设置对话框中,您需要在应用程序的某个位置反映该位置。 (许可证:临时某处,如果在“返回窗口”关闭后点击,则强制执行检查*然后*,如果它“过早”以获得永久许可证则生成错误消息。一旦第二次验证(自动,或手动),成为许可证:永久。) – Yakk 2015-06-18 21:21:24
@Yakk - 我不知道你看到什么问题。是否需要控制第二次检查的时间? – 2015-06-18 21:30:56
所以有人购买你的产品,知道它“离线工作”。然后他们下载它,运行它,它工作。接下来,他们失去了连接(无论什么原因没有数据,wifi关闭)。 3天后,他们的应用程序停止工作,几乎没有诊断。重点是能够说“一旦它说永久许可证,应用程序离线*”。对客户来说显然是一个重要的状态变化:使客户看到状态变化是重要的。 – Yakk 2015-06-19 01:13:52