ডিসিরিয়ালাইজেশন ফিল্টার (Deserialization Filters)
আক্রমণ প্রতিরোধের জন্য কোন ক্লাসগুলোকে ডিসিরিয়ালাইজ করা যাবে তা সীমাবদ্ধ করুন।
কোড তুলনা
✕ 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();
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
নিরাপত্তা
অপ্রত্যাশিত/ক্ষতিকর ক্লাসগুলির ডিসিরিয়ালাইজেশন প্রতিরোধ করে।
ফাইন-গ্রেইনড (Fine-grained)
ডেপথ, অ্যারে সাইজ, রেফারেন্স এবং ক্লাস প্যাটার্ন কন্ট্রোল করুন।
JVM-ওয়াইড (JVM-wide)
JVM-এর সমস্ত ডিসিরিয়ালাইজেশনের জন্য একটি গ্লোবাল ফিল্টার সেট করুন।
পুরনো পদ্ধতি
সবকিছু মেনে নিন
আধুনিক পদ্ধতি
ObjectInputFilter
JDK থেকে
9
কঠিনতা
উন্নত
JDK সমর্থন
ডিসিরিয়ালাইজেশন ফিল্টার (Deserialization Filters)
উপলব্ধ
JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
ObjectInputFilter আপনাকে ক্লাসগুলোকে অ্যালাওলিস্ট/ডেনাইলিস্ট (allowlist/denylist) করতে, অবজেক্ট গ্রাফের গভীরতা, অ্যারের সাইজ এবং রেফারেন্স কাউন্ট লিমিট করতে দেয়। এটি কোনো এক্সটার্নাল লাইব্রেরি ছাড়াই ডিসিরিয়ালাইজেশন দুর্বলতার বিরুদ্ধে সুরক্ষা দেয়।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ