2013-01-18 28 views
0

我们有一个使用Java/Java EE/Spring批处理的应用程序(称为核心应用程序)构建。该应用程序包含所有业务逻辑并打包成一个jar文件。如何让我的Java/Java EE应用程序的IP更安全?

现在,我们有另一个使用Spring MVC Hibernate构建的Web应用程序。这个网络应用程序为用户提供了一个UI来配置我们的核心应用程序。这个Web应用程序使用一个核心应用程序的jar来通过引用配置来执行业务任务。现在,我们希望将这些应用程序作为产品分发给各个公司。但是众所周知,罐子/战争可以反编译。

因此,我们可以做些什么来节省我们的IP?

目前我们正在尝试DashO(来自Preempitve的java混淆器)。即使在混淆之后,也可以使用反编译器来读取代码。尽管如此,代码阅读起来要复杂得多,业务逻辑可以被读取。

保护我们IP的最佳做法是什么?什么是使我们的应用程序更安全的各种方法?

编辑:请注意,我们必须向我们的客户分发WAR,这是担心的主要原因。

回答

0

以下是一些可以保护代码的方法。

  1. 使用复杂的模糊处理的通过这个 转到:

[复合混淆工具] [1]

有这并不仅仅是Java代码的mangling更多类似的工具。

  1. 使用SSL保护您的网络安全。使整个网络路径加密。

  2. 使用证书管理增强安全性并防止未经授权的用户非法访问您的源代码。

让我知道如果你有任何关于上述的说明。

谢谢。

1

您是否试图保护您的服务器端逻辑或客户端逻辑或两者?

如果是第一个,那么您已经完成了,因为您无法反编译您无权访问的文件。

如果是第二个,你几乎不走运。将敏感逻辑从客户端移动到服务器,使客户端只是一个中间人,他们提供用户输入并将服务器输出格式化为漂亮的用户界面。这样你就不会在意是否有人看到你无聊的Web服务客户端。

0

你能从网上下载应用程序的一部分吗? 因此,战争开始,从你的服务器下载更多的模块,然后使用它们。此外,还要确保下载模块不会存储在任何磁盘上。

或者如果您构建API并将重要的IP移动到API中,该怎么办?

或者如何将代码的一部分移动到本地代码?

+0

实际上,我们也建立了网络服务。但问题是我们的应用程序正在处理的数据是巨大的,也是非常敏感的数据。由于数据量巨大,每次API调用所花费的时间都会造成巨大的延迟。 – Saurabh

0

观察不是安全。正如我的安全伙伴所称的那样,它是“通过朦胧的安全”。

我的简短答案是,您应该从安全的角度出发设计您的应用程序。漫长的答案是你需要保护你的通信。例如,您可能需要某种独特的公钥/私钥才能访问您的Web服务,并使您的所有Web服务HTTPS都可以让黑客无法轻松浏览您的数据包并挑选协议。我们可以称之为“许可证密钥”。但是,所有对安全有所了解的人都会告诉你,实际上没有任何全职教授的方法,只有那些让教学更难的方法。

我有一个伙伴,曾经写Java Applet游戏与此斗争。当他观察他的代码时,认为这会阻止黑客发送虚假分数,他发现他们开始解编代码并直接调用JAR。最终,他重新编写了他的整个比分追踪系统,以使其更“智能”,从而知道你不能一次只得到1000000分。相反,客户必须定期更新分数,并且服务器已经制定了一些规则来防止分数过快增长。

无论如何,这是我的0.02美元的价值。