我正在处理与软件许可相关的任务,当前的验证方法需要对公司服务器进行在线检查,但由于用户可以操作系统时钟并继续在离线模式下使用该软件,我已被分配到寻找一种使用java进行离线验证时钟检查的方法,我知道没有防弹方法可以做到这一点,但任何人都可以建议一种方法,使其在离线模式下使用过期的许可证变得困难。谢谢
答案 0 :(得分:1)
让软件知道最早的日期(根据该版本投入生产的时间)。如果时钟在该日期之前,则拒绝访问,直到在线检查成功为止。这需要在文件系统的某个位置存储这个附加状态(应用程序被锁定)。您可能希望将应用程序锁定为#34;如果文件丢失,以防止有人仅仅通过删除文件来重置状态。
此外,当许可证检查成功(在线或离线)时,请记下时间。拒绝之前的任何访问,并拒绝访问,直到在线检查成功为止。这迫使时间向前迈进,如果他们搞砸了他们的时钟重新设置,那么他们就会被锁定,直到他们成功进行在线检查。
当许可证检查在线成功时,将服务器时间戳存储在客户端上(上面使用的时间戳以保持时间前进)。
显然,您需要保护保持此状态的文件内容,例如使用加密。
这不是万无一失的,但是让某些人通过捏造时钟来使用过期的许可证更加困难。