【问题标题】:Java getting global date not the system date even if offline [duplicate]即使离线,Java也会获取全局日期而不是系统日期[重复]
【发布时间】:2017-05-04 23:09:17
【问题描述】:

我正在为我的 java 应用程序创建自定义许可证模块 每个许可证都有开始日期和结束日期,我验证结束日期是否 >= 当前日期 我想避免客户端可能通过获取全局日期来更改他的系统日期,即使客户端机器没有互联网连接

我试过 Joda API,nanoTime 没有舔

这样可行吗?

谢谢,

【问题讨论】:

  • 如果没有互联网并且系统日期已更改,您希望从哪里获得该日期?
  • 您在问如何在未连接到 Internet 的情况下从 Internet 检索信息?
  • 用户应该每天扫描报纸的头版来解锁软件。您可以使用 ocr 获取日期字符串。用户可能会在车库里找到一堆旧文件并作弊。但肯定会在几天之内用完。如果您的用户集中在某些地区,您甚至可以安排当地报纸的回扣。

标签: java


【解决方案1】:

你问的是不可能的。但是您可以尝试其他方法来实现您的目标。

1- 使您的软件必须连接互联网,以便在互联网连接开启时运行或检查日期。

2- 每当您的软件退出时,将当前日期安全地保存到数据库或文件中。并在您的软件启动时检查此日期。如果系统当前日期早于您保存的日期,您可以了解系统日期已更改。此时,您可以取消软件许可或要求连接互联网。它仍然可能被愚弄,但这可以给你一些想法。

3- 使用加密狗获得许可。可以找资料here

【讨论】:

  • 很好的答案,谢谢。
【解决方案2】:

没有办法通过篡改时钟来防止drm规避,除非您愿意在应用程序无法打电话回家验证许可证是否仍然有效时锁定您的应用程序。见How to prevent usage of expired license through system clock tampering?

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多