在Java Web应用程序中混淆代码是否值得?为什么?
在Java Web应用程序中混淆代码是否值得?为什么?
不会。代码存储在服务器上,外部用户(希望如此)无法访问。如果您认为值得保护(最小的)知识产权,可以模糊JavaScript。
最好的方法是确保您的服务器安全性达到标准,并且您没有开放对应用程序目录的访问权限(无论如何都不应该发生这种情况)。
我认为不需要。
混淆有两个主要用途:
问题在于,混淆只能挫败半心半意的反向工程尝试。严肃的尝试总是会成功。反混淆一个混淆后的JAR文件并不难,而且有很多工具可以做到这一点。
对于上述用例,比混淆更好的选择是:
唯一需要混淆Java Web应用程序的情况是将代码提供给客户在其服务器上运行。否则,这只是浪费时间和增加复杂性。
混淆的目的是使得别人更难反编译您的字节码并从中获取有用的代码。要做到这一点,他们必须能够访问您的类文件,这仅在您将它们交付给客户时才存在,而不是在远程访问时存在。
绝对是的。
如果您的开发过程正确,只有二进制文件和一些支持文件(例如标记和样式表)需要在服务器上。在任何生产环境中,没有不混淆二进制文件的好理由。
这里的其他人说这样做会给员工带来问题。唯一应该知道或关心您的二进制文件内容的人是开发人员 - 他们拥有源代码,因此不应该担心浏览已编译的对象。
我唯一能想到的任何人没有访问源代码却对二进制文件内容感兴趣的原因是反向工程 - 除非他们没有访问源代码。这意味着他们没有获得该代码的授权,或者您已经失去了它,这意味着您的源代码控制系统要么很糟糕,要么完全丢失。那是一个完全不同的谈话。
我还没有听到任何实际的例子表明服务器端混淆会导致开发或管理困难。
混淆你的服务器端代码是个好主意吗?我会毫不犹豫地回答YES。
事实上,最终用户只是可能有恶意计划的群体之一。往往内部员工,无论他们是业务用户、支持人员等,也可能有自己的计划...或者成为无意识的 帮凶。
如果您处理任何需要密码访问的信息,那么您有一个责任,利用您可以使用的每个工具来保护这些信息。
这包括保护它免受外部和内部人员的侵害。由于内部人员过度访问,公司经常失去数据和知识产权。无论这些人员是故意窃取信息还是仅仅因为黑客攻击而失去了对他们的计算机的控制都是无关紧要的。
所以,再次强调,其中一步是混淆代码,希望获取二进制文件的人更难弄清楚你的应用程序如何工作。当然,你应该采取更多措施来保护它所在的服务器;不仅仅是生产环境,而且要一直延伸到源代码控制。