将Java应用程序绑定到用户/计算机的安全解决方案



Java应用程序是否有安全的解决方案将它们绑定到特定的用户或计算机,例如通过使用MAC地址(不安全,因为可以更改?)或任何其他硬件特定数据?

我们不想创建像u盘/软件狗这样的硬件解决方案,但需要检查软件的用户是否被允许使用它。

一般来说,哪个是防止软件盗版的最佳选择?
联机吗?
服务器检查吗?
使用硬件数据进行识别?
div…

一个流行的趋势是软件在启动时(或定期)与中央服务器检查许可证有效性。通过这种方式,您可以撤销受损的许可证。可能有许多服务将为您管理这些许可证,我看到使用Esellerate。

与此同时,你添加到Java应用程序中的任何保护都可以很容易地进行反向工程或简单地超载,除非你竭尽全力混淆和保护代码。这是一项非常艰巨的任务,结果可能不值得付出努力。

有些公司(例如我工作的一家公司)除了基本的许可证生成/验证码之外不会做太多的工作。信任客户、诚实和只向有效的许可证持有者提供支持的组合效果很好。

结合使用本地系统识别和在线检查在过去对我很有效;这两者或许并不相互排斥。您可以通过使用以下一个或多个方法获得各种系统相关的属性:

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包对这些详细信息进行散列,并将其与服务器上的用户帐户相关联。然后,对用户和机器进行身份验证就像让客户端软件将结果散列发送到服务器一样简单,作为其启动例程的一部分。

最新更新