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();
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
🛡️

নিরাপত্তা

অপ্রত্যাশিত/ক্ষতিকর ক্লাসগুলির ডিসিরিয়ালাইজেশন প্রতিরোধ করে।

📐

ফাইন-গ্রেইনড (Fine-grained)

ডেপথ, অ্যারে সাইজ, রেফারেন্স এবং ক্লাস প্যাটার্ন কন্ট্রোল করুন।

🏗️

JVM-ওয়াইড (JVM-wide)

JVM-এর সমস্ত ডিসিরিয়ালাইজেশনের জন্য একটি গ্লোবাল ফিল্টার সেট করুন।

পুরনো পদ্ধতি
সবকিছু মেনে নিন
আধুনিক পদ্ধতি
ObjectInputFilter
JDK থেকে
9
কঠিনতা
উন্নত
ডিসিরিয়ালাইজেশন ফিল্টার (Deserialization Filters)
উপলব্ধ

JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ

ObjectInputFilter আপনাকে ক্লাসগুলোকে অ্যালাওলিস্ট/ডেনাইলিস্ট (allowlist/denylist) করতে, অবজেক্ট গ্রাফের গভীরতা, অ্যারের সাইজ এবং রেফারেন্স কাউন্ট লিমিট করতে দেয়। এটি কোনো এক্সটার্নাল লাইব্রেরি ছাড়াই ডিসিরিয়ালাইজেশন দুর্বলতার বিরুদ্ধে সুরক্ষা দেয়।