JavaRush /Блоги Java /Random-TG /Савол ва Ҷавоб: Чаро нигоҳ доштани парол дар Java дар мас...

Савол ва Ҷавоб: Чаро нигоҳ доштани парол дар Java дар массиви аломатҳо беҳтар аст, на сатр?

Дар гурӯҳ нашр шудааст
Шумо метавонед чунин саволро дар мусоҳиба барои вазифаи Java Junior шунавед. Аммо аз дӯсти ман инро ҳангоми мусоҳиба барои вазифаи роҳбари техникӣ пурсиданд.
Савол ва Ҷавоб: Чаро нигоҳ доштани парол дар Java дар массиви аломатҳо беҳтар аст, на сатр?  - 1
Ҳарду Stringва массиви аломатҳоро барои нигоҳ доштани маълумоти матнӣ истифода бурдан мумкин аст. Аммо бошуурона интихоб кардани ин ё он барои вазифаи мушаххас душвор аст, агар шумо то ҳол бо чунин вазъият дучор нашуда бошед. Аммо, тавре ки дӯстам қайд кард, ҳама саволҳои марбут ба String- одатан дорои хосияти махсуси сатрҳо бо номи тағирнопазирӣ ( Immutable) мебошанд ва ӯ дар мусоҳиба аз ин бартарият истифода бурд. Пас, биёед якчанд сабабҳоро дида бароем, ки чаро шумо бояд барои нигоҳ доштани гузарвожаи худ char [], на String.

Сабаби 1. Сатрҳо тағирнопазиранд

Азбаски сатрҳо дар Java тағирнопазиранд, пароли матнии оддии шумо то он даме, ки коллектор онро тоза накунад, дар хотира дастрас хоҳад буд. Ва азбаски Stringонҳо барои истифодаи такрорӣ истифода мешаванд String pool, эҳтимолияти хеле баланд вуҷуд дорад, ки парол дар хотира муддати тӯлонӣ боқӣ мемонад, ки ин комилан бехатар нест.
Java String pool ҳавз ё маҷмӯи an objectҳо (сатрҳо) мебошад, ки дар ҷои махсус - теппа ҷойгир аст. String дар Java яке аз намудҳои маъмултарини додаҳост. Ин як навъи ибтидоӣ нест, балки an object аст, зеро он хеле захираҳо аст. Ҳамин тавр, барои нигоҳ доштани сатри чор аломат, шумо бояд 56 byte хотира ҷудо кунед. Ин аст, ки сатрҳо мисли дигар an objectҳо дар теппа нигоҳ дошта мешаванд.
Ҳар касе, ки ба партовгоҳи хотира дастрасӣ дорад, метавонад паролро дар матни оддӣ пайдо кунад, ки ин як сабаби хуб барои истифода бурдани пароли рамзшуда аст, на матни оддӣ. Азбаски сатрҳо тағирнопазиранд, мундариҷаи онҳоро тағир додан мумкин нест. Ҳама гуна тағирот хати нав эҷод мекунад. Аммо дар ҳолати char [], шумо метавонед ягон унсури онро бо сифр ё аломати холӣ иваз кунед. Ҳамин тариқ, нигоҳ доштани парол дар массиви аломатҳо хатари боздоштани паролро ба таври равшан коҳиш медиҳад.

Сабаби 2. Тавсияҳои муаллифон

Худи Java (хуб, ба воситаи созандагони худ, албатта) тавсия медиҳад, ки усули 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 []Java барои нигоҳ доштани паролҳо дар худ як панацея нест. Шумо бояд чораҳои эҳтиётии бехатариро, ба монанди кор бо хэшҳо ва рамзгузории паролҳо андешед, на нигоҳ доштани онҳо дар матни оддӣ. Ва, албатта, онро фавран пас аз расмиёти аутентификатсия аз хотира тоза кунед. Дар асоси маводҳои Javarevisited
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION