可以通过更改系统日期来绕过检查到期日期

时间:2014-03-14 09:05:32

标签: java swing

我有一个使用oracle数据库的Swing应用程序。购买我的申请的人将获得包含到期日期的许可。我的应用程序会根据到期日期检查当前日期,以允许用户使用它。

问题是买家可以使用自己的数据库在我们的机器上自由部署我的应用程序。因此,他们只需更改系统日期即可绕过我的到期检查。如果我的“当前日期”的来源是来自互联网,我将失去一项允许我的应用程序脱机工作的能力。

你们知道如何防止它仍然让我的应用程序脱机工作吗?

2 个答案:

答案 0 :(得分:1)

您可以做的一件事是在内部配置文件中存储所有程序执行的当前日期日志。定义第一个日期与您部署应用程序的时间相近(例如,如果您今天部署,则为2014年2月25日),因为在部署之前没有客户端应该在日期执行您的代码。   然后,您可以分析日期中发生的有趣事情(例如,如果您注意到日期正在倒退)并相应地阻止执行。 (如果客户因有效原因更改时间,请务必给予一些摆动空间)。

答案 1 :(得分:1)

没有。在封闭的,未知的环境中,没有万无一失的方法可以做到这一点。即使有一个受信任的系统(如PHK的NTP服务器),您也可以轻易地将其破坏(通过重新路由到始终返回相同时间的NTP服务器)。您唯一能做到的就是跟踪应用程序运行的时间。除非您的应用程序本质上是为处理时间序列而设计的。在这种情况下,您可以假设这些是准确的(否则,该工具是无用的)。