Security উন্নত

নিষ্ক্রিয় SecurityManager পরীক্ষার বদলে অ্যাপ্লিকেশনে স্পষ্ট অনুমোদন এবং ডেপ্লয়মেন্ট আইসোলেশন ব্যবহার করুন।

✕ JDK 23 and earlier
SecurityManager manager = System.getSecurityManager();
if (manager != null) {
    manager.checkRead(path.toString());
}
return Files.readString(path);
✓ JDK 24+
// Untrusted users must not be able to modify this tree
Path root = allowedRoot.toRealPath();
Path resolved = root.resolve(requested)
    .normalize()
    .toRealPath();
if (!resolved.startsWith(root)) {
    throw new SecurityException(
        "Path is outside the allowed root");
}
return Files.readString(resolved);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
🔍

স্পষ্ট নীতি

অ্যাপ্লিকেশন লজিকে অনুমোদন দৃশ্যমান এবং পরীক্ষাযোগ্য।

🛡️

প্রকৃত আইসোলেশন

প্রসেস, কনটেইনার এবং অপারেটিং সিস্টেমের সীমানা পুরো অ্যাপ্লিকেশনকে সুরক্ষিত রাখে।

🚫

আবশ্যিক মাইগ্রেশন

JDK 24 ও পরবর্তী সংস্করণে আর নীতি প্রয়োগ করতে না পারা পরীক্ষাগুলো সরিয়ে দেয়।

পুরনো পদ্ধতি
SecurityManager পরীক্ষা
আধুনিক পদ্ধতি
স্পষ্ট অনুমোদন
JDK থেকে
24
কঠিনতা
উন্নত
SecurityManager পরীক্ষা থেকে স্পষ্ট অনুমোদন
উপলব্ধ

JDK 24 ও পরবর্তী সংস্করণে আবশ্যিক, যেখানে JEP 486 Security Manager-কে স্থায়ীভাবে নিষ্ক্রিয় করে।

JEP 486, JDK 24-এ Security Manager স্থায়ীভাবে নিষ্ক্রিয় করেছে, তাই System.getSecurityManager()-এর মাধ্যমে করা পরীক্ষা কেবল JDK 23 ও তার আগের সংস্করণে নীতি প্রয়োগ করতে পারে। অ্যাপ্লিকেশনকে ডোমেইন লজিকে স্পষ্টভাবে অ্যাক্সেস অনুমোদন করতে হবে; প্রকৃত ফাইল সিস্টেম পাথ সমাধান করলে বিদ্যমান সিম্বলিক লিঙ্ক অনুমোদিত রুটের বাইরে যেতে পারে না, যদি অবিশ্বস্ত ব্যবহারকারীরা একই সময়ে ওই ট্রি পরিবর্তন করতে না পারে। আক্রমণকারী লিখতে পারে এমন ট্রির ক্ষেত্রে SecureDirectoryStream-এর মতো রেস-প্রতিরোধী, হ্যান্ডেল-রিলেটিভ অ্যাক্সেস ব্যবহার করুন। আইসোলেশনের জন্য প্রসেস, কনটেইনার বা অপারেটিং সিস্টেমের সীমানা ব্যবহার করুন। JDK 24 সাময়িকভাবে অবচিত API-টি রেখেছে, তবে এটি সক্রিয় করা যায় না এবং এর পরিবর্তে অন্য কোনো ইন-প্রসেস স্যান্ডবক্স দেওয়া হয়নি।