계: Code Quality

코드 품질이 낮으면 예측할 수 없는 동작이 발생합니다. 사용자 입장에서는 사용 편의성이 떨어지는 것으로 나타나는 경우가 많습니다. 공격자에게는 예상치 못한 방법으로 시스템에 부담을 줄 수 있는 기회가 됩니다.

Code Correctness: Incorrect serialPersistentFields Modifier

Abstract
serialPersistentFields를 올바르게 사용하려면 private, staticfinal로 선언되어야 합니다.
Explanation
Java Object Serialization Specification을 사용하면 개발자는 serialPersistentFields 배열에서 지정하여 클래스에 대해 Serializable 필드를 수동으로 정의할 수 있습니다. 이 기능은 serialPersistentFieldsprivate, staticfinal로 선언된 경우에만 작동합니다.

예제 1: 다음 serialPersistentFields 선언은 private, staticfinal이 아니기 때문에 Serializable 필드를 정의하는 데 사용되지 않습니다.

class List implements Serializable {
public ObjectStreamField[] serialPersistentFields = { new ObjectStreamField("myField", List.class) };
...
}
References
[1] Sun Microsystems, Inc. Java Sun Tutorial
[2] SERIAL-2: Guard sensitive data during serialization Oracle
[3] Standards Mapping - Common Weakness Enumeration CWE ID 485
desc.structural.java.code_correctness_incorrect_serialpersistentfields_modifier