Reino: Code Quality
Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.
Code Correctness: Non-Static Inner Class Implements Serializable
Abstract
Classes internas que implementam
java.io.Serializable
podem causar problemas e deixar vazar informações da classe externa.Explanation
A serialização de classes internas resulta na serialização da classe externa, o que pode deixar vazar informações ou provocar erros de tempo de execução se a classe externa não for serializável. Além disso, a serialização de classes internas pode causar dependências de plataforma, já que o compilador Java cria campos sintéticos para implementar classes internas, mas estas são dependentes da implementação e podem variar de um compilador para outro.
Exemplo 1: O código a seguir permite a serialização de uma classe interna.
No
Exemplo 1: O código a seguir permite a serialização de uma classe interna.
...
class User implements Serializable {
private int accessLevel;
class Registrator implements Serializable {
...
}
}
No
Example 1
, quando a classe interna Registrator
for serializada, ela também serializará o campo accessLevel
da classe 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