java文件编译后生成的字节码比较容易逆向变回源码,java还有反射机制暴力访问,这不是很不安全吗
不同的语言有不同的关注点,如果java容易反编译你就觉得不安全的话,那么lz我告诉你,javascript、php、python、ruby等等解释型的语言,干脆就是只有源代码,都不需要反编译你是不是吓傻了。
安全的本质不是依赖代码的不公开,相反公开的代码,或者说被审计过的代码,才更安全。linux内核是开源的,其安全性并不比闭源的windows差。打个比方,门的安全性在于只有特定的锁才能打开,而不是对如何找到钥匙孔加以保密。同样,加密算法的安全性并不是说算法本身的保密,相反,算法我可以都告诉你,但是你没有密钥无法解密,这才是安全的。
至于知识产权盗窃,这一点在我朝的确非常严重,并非单纯把源代码加密就能解决的,编译的作用也不是加密源代码。主流的编程语言都是西方人搞出来的。从某种意义上说,西方世界指责我朝不重视知识产权,也是不争的事实。
web应用99.99%的情况代码都是放在服务器上的,如果想获取源代码就要攻破服务器的安全措施. 这也是重中之重.如果服务器的安全得不到保障, 那其他的都是空话. 其次大家都知道java代码都是很容易进行反编译的 所以肯定就有相对应的办法来应对 大部分采用代码混淆的办法 会用无意义的短变量去重命名类、变量、方法。这些步骤让代码更精简,更高效,也更难被逆向破解。
如果要卖软件或者部署服务到客户端,一般会用c或者c++重写,加上点花指令别人基本就很难破解了。
企业要是没那么多钱,就把关键代码(比如用户激活认证)用c或c++重写,然后用java的JNI调用,这样客户想要破解使用就得深度修改你的代码。
java之所以如此流行正是因为它的开源精神,这使更多的企业可以以更低的成本研究更多更深的技术。