مرشّحات إلغاء التسلسل
قيّد الفئات التي يمكن إلغاء تسلسلها لمنع الهجمات.
مقارنة الكود
✕ 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
مرشّحات إلغاء التسلسل
متاح
متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)
كيف يعمل
يتيح لك ObjectInputFilter إدراج الفئات في القائمة البيضاء أو السوداء وتحديد عمق مخطط الكائنات وأحجام المصفوفات وأعداد المراجع. يدافع هذا عن نقاط ضعف إلغاء التسلسل دون مكتبات خارجية.
توثيق ذو صلة