【问题标题】:Making trial version of client-server application in Java用Java制作客户端-服务器应用程序的试用版
【发布时间】:2013-04-16 06:44:58
【问题描述】:

我需要知道如何制作使用 Spring RMI(服务器端)和 Java Swing(客户端)实现的客户端-服务器应用程序的试用版(例如 30 天试用版)。 我正在考虑通过检查当前日期与首次登录日期来在客户端执行此操作。但它可能很容易被破解。以可靠的方式执行此操作的最佳选择是什么?

谢谢。

【问题讨论】:

    标签: java spring swing rmi trial


    【解决方案1】:

    如果您有客户端配置,请添加几个带有客户端首次启动日期的新密钥。人们通常不会查看应用程序配置的到期日期。

    并且,选择与许可无关的密钥,并尽可能加密您的值。

    如果一个密钥被篡改,您可以使用另一个密钥检查它是否被篡改并阻止访问。

    【讨论】:

    • 如果用户更改系统日期会怎样?那么日期计算就会出错,它会破坏逻辑。
    • 如果您不希望用户将日期设置为试用的“第 1 天”,则必须存储 2 个值。客户端首次启动的日期,以及客户端最近启动的另一个日期。第二个将在每次申请结束时更新。因此,当应用程序在启动时检测到最近启动的日期在未来时 - 用户已更改日期并可以阻止访问。
    • 好的,谢谢。非常感谢您的帮助。如果我在客户端这样做,我将使用此方法。您对在服务器端执行此操作有任何想法吗?
    • 检查clientKey文件是否存在于客户端机器的USER HOME目录中。如果未找到,请从服务器请求 clientKey 并创建一个新文件 - 如果它可以是隐藏文件则很好。使用 clientKey 从服务器获取剩余天数。卸载后,不要删除clientKey。
    • 好的。如果最终用户删除客户端密钥怎么办?不是违反规定吗?有什么解决办法吗?
    【解决方案2】:

    更好更安全的解决方案是在服务器端实现它。

    您可以在令牌第一次运行时向客户端发出请求,并跟踪服务器上的令牌。不过,这有一个缺点,即如果有人删除或重新安装,你永远不会知道。

    您还可以发送带有一些识别特征的令牌请求,例如 MAC 地址。这样您就可以知道客户端是否在发出重复请求。

    更好的是,而不是令牌,跟踪 MAC 地址。

    【讨论】:

    • 您可以更改MAC地址,如图here
    • 我知道,但这对普通用户来说太麻烦了,取决于他/她是否知道这个试用版是如何工作的。通常用户只需查看注册表、配置和数据文件或重新安装。
    • @galuano1 最终用户将获得服务器和客户端的控制权。因此在这种情况下,最终用户可以更改服务器端配置并破坏系统。我怎样才能避免这种情况?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多