是否值得混淆java Web应用程序?为什么?
答案 0 :(得分:10)
没有。代码存储在外部用户(希望)无法访问它的服务器上。如果您认为值得(最小)IP保护,您可能希望对JavaScript进行模糊处理。
最好的办法是确保您的服务器安全性达到最佳状态,并且您没有对应用程序目录的开放访问权限(无论如何都不应该这样做)。
答案 1 :(得分:5)
混淆有两个主要用例:
问题在于混淆只会导致逆向工程的半心半意。认真的尝试总会成功。反编译混淆的JAR文件真的不是那么难,并且有很多工具可以做到这一点。
对于上述用例,混淆的更好的替代方法是:
答案 2 :(得分:3)
您将混淆java Web应用程序的唯一情况是,您将代码提供给客户以在其服务器上运行。否则,这只是浪费时间和额外的复杂性。
混淆是为了让某些人更难以反编译你的字节代码并从中获取有用的代码。要做到这一点,他们必须能够访问您的类文件,这些文件仅在您向客户提供时才存在,而不是在他们远程访问时。
答案 3 :(得分:2)
我想补充一点,你应该有一个很好的理由,因为混淆会使调试变得更难。
答案 4 :(得分:2)
您可能会找到与Do you obfuscate your commercial Java code?相关的答案。
答案 5 :(得分:2)
是否值得混淆java Web应用程序?
取决于
为什么?
如果您要将您的网络应用程序许可安装在您客户的网站上,并且您不希望您的客户通过反编译 * 来重用您的代码,那么就是。
如果您正在为您的网络应用程序提供服务而且只能从您那里获得安装,我会说它不是值得的。更好的是增加您的网络安全性。
*参见Stephen C评论
答案 6 :(得分:1)
绝对是的。
如果您的开发过程正确,则只需要在服务器上安装二进制文件和一些支持文件(例如标记和样式表)。没有充分的理由不在任何生产环境中混淆二进制文件。
这里的其他人说,这样做会给员工带来麻烦。唯一应该了解或关注二进制文件内容的人是开发人员 - 他们有源代码,所以他们不应该担心编译对象。
我可以看到任何无法访问源代码的人对二进制文件的内容感兴趣的唯一原因是逆向工程 - 您的员工中没有人对逆向工程您自己的产品感兴趣,除非他们无法访问来源。这意味着他们要么没有清除该代码,要么就已经丢失了,这意味着你的源代码控制系统要么糟糕,要么完全丢失。这是一次完全不同的对话。
我还没有听到任何导致开发或管理困难的服务器端混淆的实际例子。
答案 7 :(得分:-2)
混淆服务器端代码是个好主意吗?我会给出一个不合格的YES。
现实情况是,end user只是一个可能有邪恶计划的群体。常见的internal员工,无论他们是business users,support staff等,也可能有自己的计划......或者unwitting accomplices。
如果您处理需要密码才能访问的任何信息,那么您有职责来利用您使用的所有工具来保护这些信息。
这包括保护它免受外部和internal人的侵害。由于内部人员访问过多,公司会一直失去数据和知识产权。这些人是否故意窃取信息或simply lost control of their computers due to hacker attacks是无关紧要的。
所以,再一次,是的一步是混淆,希望获得二进制文件的人有更难以确定你的应用程序是如何工作的。当然,你应该通过保护它所依赖的服务器来进一步发展;而不只是production,而是一直回到source control。