如何使我的Java/Java EE应用程序的IP更安全?
我们使用Java/javaee/Spring批处理构建了一个应用程序(比如核心应用程序)。此应用程序包含所有业务逻辑,并打包到jar文件中 现在,我们有了另一个使用SpringMVC构建的web应用程序,Hibernate。这个web应用程序为用户提供了一个UI来配置我们的核心应用程序。此web应用程序使用核心应用程序的jar通过引用配置来执行业务任务。现在,我们希望将这些应用程序作为产品分发给各个公司。但我们都知道,JAR/WAR是可以反编译的 因此,我们可以做些什么来保存我们的IP 目前我们正在尝试DashO(来自Preempitve的java模糊器)。即使在混淆之后,也可以使用反编译器读取代码。尽管代码读起来要复杂得多,但可以读取业务逻辑 保护我们的知识产权的最佳做法是什么?使我们的应用程序更安全的各种方法有哪些如何使我的Java/Java EE应用程序的IP更安全?,java,spring,jakarta-ee,spring-mvc,obfuscation,Java,Spring,Jakarta Ee,Spring Mvc,Obfuscation,我们使用Java/javaee/Spring批处理构建了一个应用程序(比如核心应用程序)。此应用程序包含所有业务逻辑,并打包到jar文件中 现在,我们有了另一个使用SpringMVC构建的web应用程序,Hibernate。这个web应用程序为用户提供了一个UI来配置我们的核心应用程序。此web应用程序使用核心应用程序的jar通过引用配置来执行业务任务。现在,我们希望将这些应用程序作为产品分发给各个公司。但我们都知道,JAR/WAR是可以反编译的 因此,我们可以做些什么来保存我们的IP 目前我们
编辑:请注意,我们必须向我们的客户分发WAR,这是引起担忧的主要原因。下面是一些保护代码的方法
谢谢。您是想保护服务器端逻辑还是客户端逻辑,还是两者都要保护 如果是第一个,那么您已经完成了,因为您无法对无权访问的文件进行反编译
如果是第二次,你就太不走运了。将敏感逻辑从客户端移动到服务器,使客户端成为一个简单的中间人,在一个漂亮的UI中提供用户输入并格式化服务器输出。这样,如果有人看到你无聊的web服务客户端,你就不会在意了。你能从web下载部分应用程序吗? 所以war启动,从服务器下载更多的模块,然后使用它们。此外,还将确保下载模块未存储在磁盘上的任何位置 或者,如果您构建了一个API,并将重要的IP移到API中,又如何呢
或者将部分代码移动到本机代码中如何?对象化不是安全性。正如我的安全伙伴所说,这是“通过默默无闻实现的安全” 我的简短回答是,您应该从一开始就考虑安全性来设计应用程序。答案很长,那就是你需要确保你的通讯安全。例如,您可能需要某种唯一的公钥/私钥才能访问您的web服务,并使您的所有web服务都使用HTTPS,这样黑客就不会轻易地窥探您的数据包并找出协议。我们可以称之为“许可证密钥”。但是,正如所有了解安全性的人都会告诉你的那样,实际上没有任何完整的prof方法,只有那些使它更难的方法 我有一个朋友曾经写过Java小应用程序游戏,但很难做到这一点。当他看到自己的代码时,认为这会阻止黑客发送虚假分数,他发现他们刚刚开始反编译代码并直接调用JAR。最终,他重新编写了他的整个分数跟踪系统,使其更加“智能”,这样它就知道你不能一次只获得10000000分。取而代之的是,客户端必须定期发送分数更新,服务器也加入了防止分数增长过快的规则
无论如何,那是我的0.02美元。事实上,我们还建立了一个web服务。但问题是我们的应用程序正在处理的数据是巨大的,也是非常敏感的数据。由于数据量巨大,每次API调用所花费的时间将导致巨大的延迟。