是否存在Java应用程序的安全解决方案将它们绑定到特定用户或计算机,例如使用MAC地址(因为可以更改而不安全?)或任何其他硬件特定数据?
我们不想创建硬件解决方案,如usb棒/加密狗,需要检查是否允许软件用户使用它。
一般来说哪个是防范软件盗版的最佳选择?
永远在线?
服务器检查?
使用硬件数据识别?
...
答案 0 :(得分:1)
过去使用本地系统识别和在线检查的组合对我有效;这两者可能并不相互排斥。您可以使用以下一种或多种方法获取各种与系统相关的属性:
System.getProperty("user.name");
System.getProperty("user.home");
System.getProperty("os.arch"); // the operating system architecture
System.getProperty("os.name");
System.getProperty("os.version");
然后可以使用java.security.MessageDigest包对这些详细信息进行哈希处理,并与服务器上的用户帐户相关联。然后,验证用户和计算机就像让客户端软件将生成的哈希值作为启动例程的一部分发送到服务器一样简单。
答案 1 :(得分:1)
一种流行趋势是软件在启动(或定期)与中央服务器检查许可证有效性时。这样您就可以撤销受损的许可证。可能有很多服务会为您管理这些许可证,我看到使用了Esellerate。
与此同时,您添加到Java应用程序的任何保护都可以轻松进行逆向工程或简单过载,除非您不遗余力地模糊和保护代码。这是一项非常艰巨的任务,结果可能不值得付出努力。
有些公司(例如我工作的公司)除了基本的许可证生成/验证代码之外,并没有做太多工作。信任客户诚实并仅向有效许可证持有者提供支持的组合效果很好。