JavaRush /جاوا بلاگ /Random-SD /سوال ۽ جواب: ڇو بهتر آهي ته جاوا ۾ پاسورڊ کي اسٽرنگ جي بج...

سوال ۽ جواب: ڇو بهتر آهي ته جاوا ۾ پاسورڊ کي اسٽرنگ جي بجاءِ ڪردار جي صف ۾ محفوظ ڪجي؟

گروپ ۾ شايع ٿيل
توهان شايد جاوا جونيئر پوزيشن لاء هڪ انٽرويو ۾ اهڙي سوال ٻڌي سگهو ٿا. پر منهنجي دوست کان اهو پڇيو ويو ته هڪ انٽرويو دوران ٽيڪنيڪل ليڊ جي پوزيشن لاء.
سوال ۽ جواب: ڇو بهتر آهي ته جاوا ۾ پاسورڊ کي اسٽرنگ جي بجاءِ ڪردار جي صف ۾ محفوظ ڪجي؟  - 1
ٻئي String، ۽ هڪ ڪردار صفا استعمال ڪري سگھجن ٿيون ٽيڪسٽ ڊيٽا کي ذخيرو ڪرڻ لاءِ. پر شعوري طور تي هڪ خاص ڪم لاءِ هڪ يا ٻئي کي چونڊڻ ڏکيو آهي جيڪڏهن توهان اڃا تائين اهڙي صورتحال سان منهن نه ڪيو آهي. بهرحال، جيئن منهنجي دوست اشارو ڪيو، ڪنهن به سوال سان لاڳاپيل String، عام طور تي تارن جي هڪ خاص ملڪيت شامل هوندي آهي جنهن کي immutability ( Immutable) سڏيو ويندو آهي، ۽ هن انٽرويو ۾ ان جو فائدو ورتو. تنهن ڪري، اچو ته ڪجهه سببن تي نظر رکون ڇو ته توهان کي استعمال ڪرڻ گهرجي char []، ۽ نه، توهان جو پاسورڊ ذخيرو ڪرڻ لاء String.

سبب 1. اسٽرنگ ناقابل تبديل آهن

جيئن ته جاوا ۾ اسٽرنگ ناقابل تبديل هوندا آهن، تنهن ڪري توهان جو سادو متن پاسورڊ ميموري ۾ موجود هوندو جيستائين ڪچرو ڪليڪٽر ان کي صاف نه ڪري. ۽ جيئن ته Stringاهي String poolبار بار استعمال لاء استعمال ڪيا ويا آهن، اتي هڪ تمام وڏو امڪان آهي ته پاسورڊ هڪ ڊگهي وقت تائين ميموري ۾ رهندو، جيڪو بلڪل محفوظ ناهي.
جاوا اسٽرنگ پول ھڪڙو تلاءُ آھي يا شين جو سيٽ (strings) جيڪو ھڪ خاص جاءِ تي واقع آھي - ھيپ. جاوا ۾ اسٽرنگ سڀ کان عام ڊيٽا جي قسمن مان هڪ آهي. هي هڪ ابتدائي قسم نه آهي، پر هڪ اعتراض آهي، ڇاڪاڻ ته اهو تمام گهڻو وسيلو آهي. تنهن ڪري، چار اکرن جي هڪ تار کي ذخيرو ڪرڻ لاء، توهان کي 56 بائيٽ ميموري مختص ڪرڻ جي ضرورت آهي. اهو ئي سبب آهي ته تار، ٻين شين وانگر، ڍير تي ذخيرو ٿيل آهن.
ميموري ڊمپ تائين رسائي حاصل ڪرڻ وارو ڪو به ماڻهو سادي متن ۾ پاسورڊ ڳولي سگهي ٿو، جيڪو سادي متن جي بجاءِ انڪرپٽ ٿيل پاسورڊ استعمال ڪرڻ جو سٺو سبب آهي. ڇاڪاڻ ته تارون بدلجندڙ آهن، انهن جي مواد کي تبديل نٿو ڪري سگهجي. ڪا به تبديلي هڪ نئين لائين ٺاهي ويندي. پر جي صورت ۾ char []، توهان ان جي ڪنهن به عنصر کي صفر يا خالي ڪردار سان تبديل ڪري سگهو ٿا. ان ڪري، پاسورڊ کي هڪ ڪردار جي صف ۾ محفوظ ڪرڻ واضح طور تي پاسورڊ مداخلت جي خطري کي گھٽائي ٿو.

سبب 2. ليکڪن جون سفارشون

جاوا پاڻ (چڱو، ان جي تخليق ڪندڙن جي ذريعي، يقينا) getPassword ()ڪلاس مان هڪ طريقو استعمال ڪرڻ جي سفارش ڪري ٿو JPasswordFieldجيڪو واپس اچي ٿو char []. توھان پڻ ڪوشش ڪري سگھو ٿا ختم ٿيل طريقو getText (). ٻوليءَ جي ليکڪن جي سفارشن تي عمل ڇو نه ڪيو وڃي؟

سبب 3. پرنٽ

هڪ قسم سان Stringهميشه اهو خطرو هوندو آهي ته اسٽرنگ ۾ محفوظ ڪيل متن لاگ فائل ۾ يا ڪنسول ۾ پرنٽ ڪيو ويندو. ساڳئي وقت، جيڪڏهن توهان استعمال ڪندا آهيو Array، توهان صفن جي مواد کي پرنٽ نه ڪندا، پر صرف ان جي جڳهه کي ياداشت ۾. يقينن، اهو بلڪل سنجيده سبب ناهي، پر اڃا تائين اهو پڻ احساس آهي.
String strPassword = "Unknown";
char [] charPassword = new char [] {'U', 'n', 'k', 'w', 'o', 'n'};
System.out.println ("String password:" + strPassword);
System.out.println ("char password:" + charPassword);

String password: Unknown
Character password: [C@110b053
يقينن، char []جاوا استعمال ڪرڻ پاڻ ۾ پاسورڊ محفوظ ڪرڻ لاء هڪ علاج نه آهي. توهان کي حفاظتي احتياط وٺڻ جي ضرورت آهي، جهڙوڪ هيش سان ڪم ڪرڻ ۽ پاسورڊ کي انڪرپٽ ڪرڻ بجاءِ انهن کي سادي متن ۾ محفوظ ڪرڻ. ۽، يقينا، تصديق جي عمل کان پوء فوري طور تي ميموري مان حذف ڪريو. Javarevisited کان مواد جي بنياد تي
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION