如何创建安全的许可Java EE应用程序?

我们正在开发一个由客户选择的任何数据库支持的Java EE应用程序。

我们将根据用户许可证价格向客户销售。 我如何确保应用程序根据我们的条件使用,即不容易破解? 有没有可用的教程?

Bill Karwin的回答是评论中提到的问题中最有用的答案。 假设你将继续采用“保护”方案,尽量做到最低限度。 任何其他东西往往会极大地挫败用户,并导致较低的重复业务和/或增加了破解您令人沮丧的系统的愿望。

从您的问题来看,很难判断每个用户是否会安装该应用程序。 如果是这样,您可能只需要一个他们必须以某种方式联系您的许可证代码。 如果它是客户端 – 服务器的东西,那么你的选择更加有限; 事实上,我想不出一个我曾经设计过的单一解决方案,或者在实践中遇到的并不是非常令人沮丧的解决方案。 您可能也可以在此处执行许可证代码解决方案,但许可证代码会以某种方式携带指示其付费用户数量的有效负载,然后禁止创建/使用超过该数量的用户。 不过,那时候,你真的走的是我提到的挫折线。

如果你可以混淆 – 这是一个开始的方式。 但是如果你使用控制框架的反转(例如spring)可能会很痛苦。 我听说也有可能混淆spring的背景,但从未尝试过。 另外(只是猜测)reflection,动态代理等可能会有一些惊喜。 关于许可,我建议使用TrueLicense 。 它具有非常灵活的处理各种保护方面的手段以及开箱即用的免费试用期。 工作得很好,并有很好的文档。

客户是否支付此应用程序的支持? 如果是这样,那么支持是一种比申请本身的许可更大的回报。 如果是这样,您可以考虑锁定应用程序,而是选择仅提供对软件的真实副本的支持(通过校验和等certificate的未修改副本)。 许多获得此软件许可的企业更倾向于避免任何修改(即使他们想要实际做到这一点的可能性很小),以免损害他们的支持。

仅供参考:这就是Oracle倾向于使用其电子商务套件进行操作的方式。 您几乎可以修改任何所需的组件。 祝你得到支持,祝你好运!

看看Atlassian如何销售他们的产品。 我相信这是一种非常有效的方法,也可能适合你。 注意:订阅更新应该有附加价值!