I/O Avanzado

Restringe qué clases pueden ser deserializadas 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();
¿Ves un problema con este código? Cuéntanos.
🛡️

Seguridad

Previene la deserialización de clases inesperadas o maliciosas.

📐

Control granular

Controla profundidad, tamaño de arrays, referencias y patrones de clases.

🏗️

A nivel de JVM

Establece un filtro global para toda la deserialización en la JVM.

Enfoque Antiguo
Aceptar todo
Enfoque Moderno
ObjectInputFilter
Desde JDK
9
Dificultad
Avanzado
Filtros de deserialización
Disponible

Ampliamente disponible desde JDK 9 (septiembre de 2017)

ObjectInputFilter permite crear listas de clases permitidas y denegadas, limitar la profundidad del grafo de objetos, el tamaño de arrays y el conteo de referencias. Esto defiende contra vulnerabilidades de deserialización sin necesidad de bibliotecas externas.

Compartir 𝕏 🦋 in