界: Code Quality
程式碼品質不佳,會導致無法預料的行為。從使用者的角度來看,這通常表現為可用性不佳。對於攻擊者而言,這提供了以意想不到的方式向系統施加壓力的機會。
Code Correctness: Non-Static Inner Class Implements Serializable
Abstract
實作
java.io.Serializable
的內部類別可能導致問題並從外部類別洩漏資訊。Explanation
序列化內部類別會導致序列化外部類別,因此,如果無法序列化外部類別,很可能洩漏資訊或導致執行階段錯誤。除此以外,序列化內部類別可能造成平台相依性,因為 Java 編譯器為了實作內部類別,會建立合成欄位,但這些取決於實作,並且可能隨不同的編譯器而異。
範例 1:以下程式碼允許序列化內部類別。
在
範例 1:以下程式碼允許序列化內部類別。
...
class User implements Serializable {
private int accessLevel;
class Registrator implements Serializable {
...
}
}
在
Example 1
中,當序列化內部類別 Registrator
時,也會從 User
外部類別序列化 accessLevel
欄位。References
[1] SER05-J. Do not serialize instances of inner classes CERT
[2] Standards Mapping - Common Weakness Enumeration CWE ID 398
desc.structural.java.code_correctness_non_static_inner_class_implements_serializable