是否值得混淆java Web应用程序?

是否值得混淆java Web应用程序? 为什么?

不可以。代码存储在服务器上,外部用户(希望)无法访问它。 如果您认为值得(最小)IP保护,您可能希望对JavaScript进行模糊处理。

最好的方法是确保您的服务器安全性达到最佳状态,并且您没有对应用程序目录的开放访问权限(无论如何都不应该发生)。

国际海事组织,没有。

混淆有两个主要用例:

  1. 保护代码中嵌入的访问控制“秘密”(例如密码),以及
  2. 防止有人窃取你的“知识产权”。

问题在于混淆只会导致逆向工程的半心半意。 认真的尝试总会成功。 反编译混淆的JAR文件实际上并不难,并且有很多工具可以做到这一点。

对于上面的用例,混淆的更好的替代方法是:

  1. 只是不要在代码中嵌入秘密,并且
  2. 以下一项或两项:
    • 保护您的网络服务器,以便黑客无法获取代码,并且
    • 不要发送您认为有价值的IP代码,或者如果您这样做,那么只将代码发送给签署了一份保护您的知识产权的具有法律约束力的合同/许可协议的人。

如果您将代码提供给客户以在其服务器上运行,那么您将混淆Java Web应用程序的唯一方案是。 否则,这只是浪费时间和额外的复杂性。

混淆是为了让某些人更难以反编译你的字节代码并从中获取有用的代码。 要做到这一点,他们必须能够访问您的类文件,这些文件仅在您向客户提供时才存在,而不是在他们远程访问时存在。

我想补充一点,你应该有一个很好的理由,因为混淆将使调试更难。

您可能会找到对您的商业Java代码进行模糊处理的答案吗? 相关。

是否值得混淆java Web应用程序?

这取决于

为什么?

如果您要将您的Web应用程序许可安装在客户的站点上,并且您不希望您的客户通过反编译来重用您的代码* ,那么它就是。

如果您正在为您的网络应用程序提供服务而且只能从您那里获得安装,我会说它值得。 更好的是增加您的网络安全性。

*见Stephen C评论

绝对没错。

如果您的开发过程正确,则只需要在服务器上安装二进制文件和一些支持文件(例如标记和样式表)。 没有充分的理由不在任何生产环境中混淆二进制文件。

这里的其他人说,这样做会给员工带来麻烦。 唯一应该了解或关注二进制文件内容的人是开发人员 – 他们有源代码,因此他们不应该担心编译对象。

我可以看到任何无法访问源的人都会对二进制文件的内容感兴趣的唯一原因是逆向工程 – 你的员工中没有人对逆向工程你自己的产品感兴趣,除非他们不要无法访问来源。 这意味着他们要么没有清除该代码,要么就已经丢失了,这意味着你的源代码控制系统要么糟糕,要么完全丢失。 那是一次完全不同的对话。

我还没有听到任何导致开发或管理困难的服务器端混淆的实际例子。

混淆服务器端代码是个好主意吗? 我会给出一个不合格的YES。

现实情况是, 最终用户只是一个可能有恶意计划的群体。 内部员工,无论是商业用户 , 支持员工等,都可能有自己的计划……或者是不知情的 同谋 。

如果您处理需要密码才能访问的任何信息,那么您有责任利用您掌握的所有工具来保护该信息。

这包括保护它免受外部和内部人员的侵害。 由于内部人员访问过多,公司会一直失去数据和知识产权。 这些人是否故意窃取信息或者由于黑客攻击而失去对计算机的控制权是无关紧要的。

所以,再一次,是的一步是混淆,希望获得二进制文件的人有更难以确定你的应用程序是如何工作的。 当然,你应该通过保护它所依赖的服务器来进一步发展; 而不仅仅是生产 ,而是一直回到源代码控制 。