任何可以用来绕过系统安全策略限制的缺陷都是安全漏洞。
构建安全可靠的服务需要通过整体性的安全设计和综合性的防范手段。
Java的安全机制
1. 运行时安全机制
字节码校验
类加载过程中,字节码验证,防止不合规的代码影响JVM运行或载入恶意代码。
如,自行编译String类替换JDK的String类就无法通过类加载。
Class Loader 隔离代码
-
应用无法获取 Bootstrap Class-Loader 对象实例。
-
不同的 Class Loader 可以起到容器的作用,隔离模块间不必要可见性。
SecurityManager 机制
利用 SecurityManager 机制和相关组件,限制代码运行时行为能力。
对安全要求非常高的应用可以开启 SecurityManager:
Shell代码
-
-Djava.security.manager
注意:启用 Security会导致 10%~15% 的性能下降。
Oracle 官方有非常保守的建议:如