spring 应用程序的 DRM

DRM for spring application

将数字版权管理添加到 java spring 应用程序有哪些可能性?

war 文件应免费提供,但功能有限。客户应该可以选择购买无限制版本。

有这方面的标准吗?

具有新功能的附加 JAR(spring 配置文件和@ConditionalOn)

您可以为付费客户提供额外的 jar 以启用新功能。该 jar 可以使用 spring 引导自动配置功能(例如@ConditionalOnClass)加载。 你真的需要war吗?您可以改用可执行 jar(捆绑 Tomcat http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html#build-tool-plugins-maven-plugin 的 jar)。

最终结果是相同的 Web 应用程序。但是使用 jar,很容易将另一个 jar(具有附加功能)添加到类路径中,应用程序将拾取它。

详情见http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html

OSGi

您还可以使用 OSGi 模块启用新功能。

但这并不是真正的 DRM,只是定制。一位客户仍然可以从另一位客户那里复制 feature-specific jar。

您可以构建 jar per-customer(在 jar 中硬编码客户详细信息)并对其进行混淆处理,但我认为它仍然 super-easy 无法破解。 Java 调试非常容易,没有针对调试的保护,side-loading 修补代码等

您可以使用 SecurityManager 启动您的应用程序(以阻止一些敏感操作)https://docs.oracle.com/javase/tutorial/essential/environment/security.html,但我认为它仍然很容易绕过。

云模型

最后说明:您的部署模型是 war(网络应用程序)。您真的需要为客户提供 war 吗?也许您可以使用云模型:自己托管 software 并仅授予客户访问权限。只能为某些(付费客户)解锁特定功能。示例:Github 甚至是 Whosebug(Whosebug 为声誉更高的用户解锁更多功能,而不是那些付费的用户,但一般规则是相同的)。