Lal*_*and 17 java licensing ntp systemtime
我目前正在使用java编写许可证管理器,我将为我的应用程序指定开始日期和结束日期,以便我可以强制许可用户在一定时间后重新许可该程序.
但我面临的问题是,任何人都可以回滚他们的系统日期和时间,以保持许可证的有效性.在Java中是否有任何方法可以检测系统日期和时间是否已更改.我已经尝试过网络时间协议来从时间服务器获取当前日期和时间.
您可能正在系统上存储许可证文件.a)包括软件在许可文件中注册的时间,b)对文件进行数字签名.
数字签名将告诉您许可证文件是否被篡改.如果没有,时间将告诉您软件何时注册; 如果"当前时间"小于注册时间,您的许可证管理员就会知道一些有趣的事情,它可以响应(拒绝运行,删除许可证,...
如果您确实要强制执行日期范围,请将每个程序执行的当前时间写入单独的数字签名文件,验证时间总是单调上升.
您还可以根据应用程序写入的任何文件检查上次记录的时间.这样一个日期晚于上次记录时间的文件表示某种许可证文件回滚.
这些不会阻止用户将时钟设置回一些,但这将使他很难以有组织的方式做到这一点.
基本上不可能做任何事情.用户可以"恢复"他的整个计算机,以便软件认为它在任何特定日期运行.
你可以通过让程序问一些时间服务器来让它变得更难.(尽管如此,如果有人真的想使用旧许可证,他可以将任何此类流量重新路由到本地时间服务器.)
相关问题/答案:
归档时间: |
|
查看次数: |
16884 次 |
最近记录: |