I/O متقدم

قيّد الفئات التي يمكن إلغاء تسلسلها لمنع الهجمات.

✕ 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();
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🛡️

الأمان

منع إلغاء تسلسل الفئات غير المتوقعة أو الضارة.

📐

دقيق

التحكم في العمق وحجم المصفوفة والمراجع وأنماط الفئات.

🏗️

على مستوى JVM

ضبط مرشّح عام لجميع عمليات إلغاء التسلسل في JVM.

الأسلوب القديم
قبول كل شيء
الأسلوب الحديث
ObjectInputFilter
منذ JDK
9
الصعوبة
متقدم
مرشّحات إلغاء التسلسل
متاح

متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)

يتيح لك ObjectInputFilter إدراج الفئات في القائمة البيضاء أو السوداء وتحديد عمق مخطط الكائنات وأحجام المصفوفات وأعداد المراجع. يدافع هذا عن نقاط ضعف إلغاء التسلسل دون مكتبات خارجية.