【发布时间】:2010-11-28 00:22:05
【问题描述】:
是否值得混淆 java web 应用程序?为什么?
【问题讨论】:
-
也许我们需要混淆以防止网络主机窃取我们的代码,不是吗?
标签: java web-applications obfuscation
是否值得混淆 java web 应用程序?为什么?
【问题讨论】:
标签: java web-applications obfuscation
绝对是的。
如果您的开发过程正确,则只有二进制文件和一些支持文件(例如标记和样式表)需要在服务器上。没有充分的理由不在任何生产环境中混淆二进制文件。
这里的其他人说这样做会给员工带来问题。唯一应该知道或关心二进制文件内容的人是开发人员——他们有源代码,所以他们不应该担心在编译对象周围闲逛。
我可以看到,任何无法访问源代码的人都会对二进制文件的内容感兴趣的唯一原因是逆向工程 - 您的员工中没有人应该对逆向工程您自己的产品感兴趣,除非他们无法访问源代码。这意味着它们要么没有被清除该代码,要么你丢失了它,这意味着你的源代码控制系统要么很糟糕,要么完全丢失。那是完全不同的对话。
我还没有听到任何服务器端混淆导致开发或管理困难的实际例子。
【讨论】:
混淆你的服务器端代码是个好主意吗?我会给出一个不合格的“是”。
现实情况是end user 只是一个可能有邪恶计划的团体。很多时候internal 员工,无论他们是business users、support staff 等,都可能有自己的计划.. 或制定了unwitting accomplices。
如果您处理任何需要密码才能访问的信息,那么您有有责任利用您可以使用的所有工具来保护这些信息。
这包括保护它免受外部人员和internal 人员的侵害。由于拥有过多访问权限的内部人员,公司总是会丢失数据和知识产权。这些人是否故意窃取信息或simply lost control of their computers due to hacker attacks 无关紧要。
所以,再一次,是的,第一步是混淆,希望获得二进制文件的人更难弄清楚您的应用程序是如何工作的。当然,您应该通过保护它所在的服务器走得更远;不仅仅是production,而是一直回到source control。
【讨论】:
是否值得混淆 java web 应用程序?
视情况而定
为什么?
如果您授权您的网络应用程序安装在您客户的网站上,并且您不希望您的客户通过反编译来重复使用您的代码*,那么可以。
如果您正在为您的网络应用程序提供服务,并且只能从您那里获得安装,我会说这不值得。更好的是增加您的网络安全性。
* 见 Stephen C 评论
【讨论】:
您可能会找到与Do you obfuscate your commercial Java code? 相关的答案。
【讨论】:
国际海事组织,没有。
混淆主要有两个用例:
问题在于,混淆只会挫败半心半意的逆向工程尝试。认真的尝试总会成功。反编译一个混淆的 JAR 文件并不难,而且有很多工具可以做到这一点。
对于上述用例,更好的混淆替代方法是:
【讨论】:
您会混淆 Java Web 应用程序的唯一情况是,如果您将代码提供给客户以在他们的服务器上运行。否则,这只是浪费时间和额外的复杂性。
混淆的目的是使某人更难反编译您的字节码并从中获取有用的代码。为此,他们必须有权访问您的类文件,只有当您将它们交付给您的客户时才存在,而不是当他们远程访问时。
【讨论】:
我要补充一点,你应该有一个很好的理由,因为混淆会使调试变得更加困难。
【讨论】:
没有。该代码存储在外部用户(希望)无法访问它的服务器上。如果您认为值得(最少的)IP 保护,您可能想要混淆 JavaScript。
最好的办法是确保您的服务器安全性达到标准,并且您没有对应用程序目录的开放访问权限(无论如何都不应该发生这种情况)。
【讨论】: