0

我们有一个使用 Java/Java EE/Spring 批处理构建的应用程序(比如核心应用程序)。这个应用程序包含所有的业务逻辑,并被打包成一个 jar 文件。

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

因此,我们可以做些什么来保存我们的 IP?

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

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

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

4

4 回答 4

1

您是要保护您的服务器端逻辑,还是客户端逻辑,或两者兼而有之?

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

如果是第二个,那你就很不走运了。将敏感逻辑从客户端转移到服务器,使客户端成为传递用户输入并在漂亮的 UI 中格式化服务器输出的中间人。这样一来,您就不会在乎是否有人看到您无聊的 Web 服务客户端。

于 2013-01-18T07:09:55.197 回答
0

隐蔽不是安全性。正如我的安全伙伴所说,它是“通过默默无闻的安全”。

我的简短回答是,您应该从一开始就考虑安全性来设计您的应用程序。长答案是您需要保护您的通信。例如,您可能需要某种唯一的公钥/私钥才能访问您的 Web 服务,并使您的所有 Web 服务 HTTPS,这样黑客就无法轻易窥探您的数据包并挑选出协议。我们可以称它为“许可证密钥”。但是,正如每个对安全性有所了解的人都会告诉你的那样,实际上没有任何完全专业的方法,只有那些让它变得更难的方法。

我有一个曾经编写 Java Applet 游戏的朋友遇到了这个问题。当他隐藏他的代码,认为这样可以阻止黑客发送虚假分数时,他发现他们刚刚开始反编译代码并直接调用 JAR。最终,他重写了他的整个分数跟踪系统,使其更加“智能”,这样它就知道你不能一次获得 10000000 分。取而代之的是,客户端必须定期发送分数更新,并且服务器已经内置规则来防止分数增长过快。

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

于 2013-01-18T20:06:06.277 回答
0

您可以从网络上下载应用程序的部分内容吗?所以战争开始了,从你的服务器下载更多的模块,然后使用它们。此外,将确保下载模块不会存储在磁盘上的任何地方。

或者,如果你构建一个 API,并将重要的 IP 移入 API 会怎么样?

或者如何将部分代码移动到本机代码中?

于 2013-01-18T08:42:00.680 回答
0

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

  1. 复杂混淆器的使用通过这个:

[复杂的混淆器工具][1]

有类似的工具可以做的不仅仅是 java 代码修改。

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

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

如果您对上述内容有任何澄清,请告诉我。

谢谢。

于 2013-01-18T07:04:19.723 回答