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 إدراج الفئات في القائمة البيضاء أو السوداء وتحديد عمق مخطط الكائنات وأحجام المصفوفات وأعداد المراجع. يدافع هذا عن نقاط ضعف إلغاء التسلسل دون مكتبات خارجية.

مشاركة 𝕏 🦋 in