Reino: Code Quality
Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.
Code Correctness: Non-Static Inner Class Implements Serializable
Abstract
Cuando las clases internas implementan
java.io.Serializable
pueden ocasionar problemas y filtrar información de la clase externa.Explanation
La serialización de las clases internas supone la serialización de la clase externa y puede que se filtre información o se produzca un error en el tiempo de ejecución si no es posible serializar la clase externa. Además, la serialización de las clases internas puede causar dependencias de la plataforma, ya que el compilador Java crea campos sintéticos para implementar las clases internas, pero dichos campos dependen de la implementación y varían en función del compilador.
Ejemplo 1: el siguiente código permite la serialización de una clase interna.
En el
Ejemplo 1: el siguiente código permite la serialización de una clase interna.
...
class User implements Serializable {
private int accessLevel;
class Registrator implements Serializable {
...
}
}
En el
Example 1
, cuando se serializa la clase interna Registrator
, también se serializa el campo accessLevel
de la clase externa User
.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