I/O Zaawansowany

Ograniczaj klasy, które można deserializować, aby zapobiegać atakom.

✕ 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();
Widzisz problem z tym kodem? Daj nam znać.
🛡️

Bezpieczeństwo

Blokuje deserializację nieoczekiwanych lub złośliwych klas.

📐

Precyzyjna kontrola

Kontrolujesz głębokość, rozmiary tablic, referencje i wzorce klas.

🏗️

Ochrona całego JVM

Możesz ustawić globalny filtr dla całej deserializacji w JVM.

Stare podejście
Akceptuj wszystko
Nowoczesne podejście
ObjectInputFilter
Od JDK
9
Poziom trudności
Zaawansowany
Filtry deserializacji
Dostępne

Szeroko dostępne od JDK 9 (wrzesień 2017)

ObjectInputFilter pozwala tworzyć allowlisty i denylisty klas, ograniczać głębokość grafu obiektów, rozmiary tablic i liczbę referencji. Chroni to przed podatnościami deserializacji bez dodatkowych bibliotek.

Udostępnij 𝕏 🦋 in