I/O Avançado

Restrinja quais classes podem ser desserializadas para prevenir ataques.

✕ Java 8
// Dangerous: accepts any class
ObjectInputStream ois =
    new ObjectInputStream(input);
Object obj = ois.readObject();
// deserialization attacks possible!
✓ Java 9+
ObjectInputFilter filter =
    ObjectInputFilter.Config
    .createFilter(
        "com.myapp.*;!*"
    );
ois.setObjectInputFilter(filter);
Object obj = ois.readObject();
Viu um problema com este código? Nos avise.
🛡️

Segurança

Previne a desserialização de classes inesperadas ou maliciosas.

📐

Controle refinado

Controle de profundidade, tamanho de arrays, referências e padrões de classes.

🏗️

Abrangência na JVM

Defina um filtro global para toda desserialização na JVM.

Abordagem Antiga
Aceitar tudo
Abordagem Moderna
ObjectInputFilter
Desde o JDK
9
Dificuldade
Avançado
Filtros de desserialização
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

ObjectInputFilter permite criar listas de permissão/bloqueio de classes, limitar a profundidade do grafo de objetos, tamanhos de arrays e contagem de referências. Isso protege contra vulnerabilidades de desserialização sem bibliotecas externas.

Compartilhar 𝕏 🦋 in