該程序違反了移動代碼的安全編碼原則,它聲明了數組 public、final 和 static。
在大多數情況下,把數組聲明為 public、final 和 static 是一個 bug。因為數組是一個可變的對象,而 final 限制要求數組對象本身只能分配一次,但并不保證數組元素的數值不變。既然數組是公用的,惡意程序便可以篡改數組中存儲的值。所以,在大多數情況下,應將數組設置為 private。
例 1:以下 Java Applet 代碼錯誤地把一個數組聲明為 public、final 和 static。
public final class urlTool extends Applet {
public final static URL[] urls;
...
}
[1] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 582
[2] G. McGraw Securing Java.Chapter 7:Java Security Guidelines