এই সব কারণে এক একটি নির্বাচন করা উচিত হয় গৃহস্থালির কাজ [] অ্যারের পরিবর্তে স্ট্রিং পাসওয়ার্ড।
১. যেহেতু স্ট্রিংস জাভাতে অপরিবর্তনীয়, সুতরাং আপনি যদি পাসওয়ার্ডটিকে সরল পাঠ্য হিসাবে সংরক্ষণ করেন তবে আবর্জনা সংগ্রহকারী এটি সাফ না হওয়া পর্যন্ত এটি মেমরিতে উপলব্ধ থাকবে এবং স্ট্রিংটি পুনরায় ব্যবহারযোগ্যতার জন্য স্ট্রিং পুলে ব্যবহার করা হয়েছে বলে এটি বেশ উচ্চ সম্ভাবনা রয়েছে দীর্ঘ সময় ধরে স্মৃতিতে থেকে যান, যা সুরক্ষার জন্য হুমকি হয়ে দাঁড়িয়েছে।
যেহেতু মেমোরি ডাম্পের অ্যাক্সেস রয়েছে এমন যেহেতু পরিষ্কার পাঠ্যে পাসওয়ার্ডটি খুঁজে পেতে পারে, এর অন্য কারণ আপনার সর্বদা সরল পাঠ্যের পরিবর্তে একটি এনক্রিপ্ট করা পাসওয়ার্ড ব্যবহার করা উচিত। যেহেতু স্ট্রিংস অপরিবর্তনীয় তাই স্ট্রিংসের বিষয়বস্তু পরিবর্তন করার কোনও উপায় নেই কারণ যে কোনও পরিবর্তনই নতুন স্ট্রিং তৈরি করবে, আপনি যদি চর ব্যবহার করেন তবে [] আপনি এখনও সমস্ত উপাদানকে ফাঁকা বা শূন্য হিসাবে সেট করতে পারেন। সুতরাং একটি অক্ষরের অ্যারেতে একটি পাসওয়ার্ড সংরক্ষণ করা একটি পাসওয়ার্ড চুরির সুরক্ষা ঝুঁকিকে স্পষ্টভাবে হ্রাস করে।
২. জাভা নিজেই জেপ্যাসওয়ার্ডফিল্ডের গেটপ্যাসওয়ার্ড () পদ্ধতিটি ব্যবহার করার প্রস্তাব দেয় যা অবহিত গেট টেক্সট () পদ্ধতির পরিবর্তে একটি চর [[] ফেরত দেয় যা সুরক্ষার কারণ উল্লেখ করে স্পষ্ট পাঠ্যে পাসওয়ার্ড দেয়। জাভা টিমের পরামর্শ অনুসরণ করা এবং তাদের বিরুদ্ধে যাওয়ার চেয়ে মানদণ্ডগুলি মেনে চলা ভাল।
৩. স্ট্রিং সহ সর্বদা লগ ফাইল বা কনসোলে প্লেইন পাঠ্য মুদ্রণের ঝুঁকি থাকে তবে আপনি যদি একটি অ্যারে ব্যবহার করেন তবে আপনি কোনও অ্যারের সামগ্রীগুলি মুদ্রণ করতে পারবেন না, পরিবর্তে এর মেমরির অবস্থান মুদ্রিত হয়। যদিও আসল কারণ না, তবু এটি বোধগম্য।
String strPassword="Unknown";
char[] charPassword= new char[]{'U','n','k','w','o','n'};
System.out.println("String password: " + strPassword);
System.out.println("Character password: " + charPassword);
String password: Unknown
Character password: [C@110b053
এই ব্লগ থেকে রেফারেন্স । আশা করি এটা কাজে লাগবে.