কম্পিউটার টিউটোরিয়াল

জাভাতে Char[] অ্যারে কেন String-এর চেয়ে আরও সুরক্ষিত (সংবেদনশীল ডেটা স্টোর করার জন্য)?


String এবং Char[] array উভয়ই টেক্সচুয়াল ডেটা স্টোর করতে ব্যবহৃত হয় কিন্তু একটিকে অন্যটির চেয়ে বেছে নেওয়া কঠিন। String-এর অপরিবর্তনশীলতা (immutability) থেকে হয়তো আমরা বুঝতে পারি কেন char[] array পাসওয়ার্ড, SSN ইত্যাদি সংবেদনশীল তথ্য স্টোর করার জন্য String-এর চেয়ে পছন্দ করা হয়।

  • সাদা স্ট্রিং ব্যবহার করলে পাসওয়ার্ড অকস্মাত লগে বা অন্য অনিরাপদ জায়গায় প্রিন্ট হয়ে যাওয়ার চান্স অনেক বেশি, যেখানে char[] array কম আক্রান্ত হওয়ার চান্স থাকে।
  • যেহেতু String immutable, স্ট্রিংয়ের কনটেন্ট পরিবর্তন বা ওভাররাইট করার জন্য কোনো মেথড ডিফাইন করা নেই। এই ফিচার স্ট্রিং অবজেক্টকে পাসওয়ার্ড, SSN ইত্যাদি সুরক্ষিত তথ্য স্টোর করার জন্য অস্থির করে। আমাদের সবসময় সুরক্ষিত তথ্য char[] array-তে স্টোর করা উচিত, String-এ না।
  • যেহেতু String immutable, যদি পাসওয়ার্ড প্লেইন টেক্সট হিসেবে স্টোর করা হয়, তবে এটি মেমরিতে থাকবে যতক্ষণ না গার্বেজ কলেক্টর এটিকে ক্লিন করে। যেহেতু স্ট্রিং String Constant Pool (SCP) ব্যবহার করে রি-ইউজেবিলিটির জন্য, এটি די lâu সময় মেমরিতে থাকতে পারে। যebackれ কাউকে মেমরি ডাম্পে অ্যাক্সেস থাকলে, সে সহজেই প্লেইন টেক্সটে পাসওয়ার্ড খুঁজে পাবে, এটিই অন্য একটি কারণ যে আমাদের এনক্রিপ্ট করা পাসওয়ার্ড ব্যবহার করা উচিত প্লেইন টেক্সটের বদলে।
  • জাভা স্বিং অ্যাপ্লিকেশন-এ গেলে দেখব, JPasswordField-এর getPassword() মেথড char[] রিটার্ন করে এবং ডিপ্রিকেটেড মেথড getText() পাসওয়ার্ডকে প্লেইন টেক্সটে রিটার্ন করে। সুতরাং জাভা নিজে getPassword() মেথড ব্যবহার করার সুপারিশ করছে।
  • char[] array-তে পাসওয়ার্ড রাখার অন্য একটি কারণ, char[] কে স্যানিটাইজ করা যায়, উদাহরণস্বরূপ ব্যবহার শেষে জাঙ্ক দিয়ে পাসওয়ার্ড ওভাররাইড করা যায়, কিন্তু জাভায় String immutable।

উদাহরণ

public class SecureInfoData {
    public static void main(String args[]) {
        String pwd = "string_pass_word";
        System.out.println("String Password is: " + pwd);
        char charPwd[] = "char_pass_word".toCharArray();
        System.out.println("Character Password is: " + charPwd);
    }
}

আউটপুট

String Password is: string_pass_word
Character Password is: [C@6d06d69c
  1. উইন্ডোজ ১১ উইন্ডোজ ১০-র চেয়ে অনেক বেশি নিরাপদ: কারণগুলো

  2. স্মার্টফোন ডাম ফোনের চেয়ে বেশি নিরাপদ: ৫ কারণ

  3. Oracle-এ সংবেদনশীল ডেটা সুরক্ষিত করুন: উন্নত রিড্যাকশন এবং ডাইনামিক মাস্কিং

  4. কেন Android বিশ্বব্যাপি iPhone-কে পেছনে ফেলেছে মার্কেট শেয়ারে