background image
在本文中,我们讨论了对付 13 种不同静态暴露的技巧。对于每种暴露,我们解释了不处理这些安
全性问题所造成的影响。我们还为您推荐了一些准则,要开发不受这些静态安全性暴露威胁的、健
壮且安全的 Java 应用程序,您应该遵循这些准则。一有合适的时机,我们就提供代码样本(既有
暴露的代码也有无暴露的代码)。
对付高严重性暴露的技巧
请遵循下列建议以避免高严重性静态安全性暴露:
限制对变量的访问
让每个类和方法都成为 final,除非有足够的理由不这样做
不要依赖包作用域
使类不可克隆
使类不可序列化
使类不可逆序列化
避免硬编码敏感数据
查找恶意代码
限制对变量的访问
如果将变量声明为 public,那么外部代码就可以操作该变量。这可能会导致安全性暴露。
影响
如果实例变量为 public,那么就可以在类实例上直接访问和操作该实例变量。将实例变量声明为
protected 并不一定能解决这一问题:虽然不可能直接在类实例基础上访问这样的变量,但仍然可
以从派生类访问这个变量。
清单 1 演示了带有 public 变量的代码,因为变量为 public 的,所以它暴露了。
清单 1. 带有 public 变量的代码
class Test {
public int id;
protected String name;
Test(){
id = 1;
name = "hello world";
}
//code
}
public class MyClass extends Test{
public void methodIllegalSet(String name){