⊗ppPmAuRHS 424 of 447 menu

Pridávanie soli pri registrácii

Takže už viete, že hashovanie pomocou md5 je nevratný proces a hacker, ktorý získa prístup k hashu, nebude môcť z tohto hashu získať heslo.

V skutočnosti toto tvrdenie nie je celkom správne - v súčasnosti zlí hackeri zostavili knižnice hashov populárnych a menej populárnych hesiel a každý hlupák môže heslo rozlúštiť jednoducho vyhľadaním jeho hashu.

Ide o dostatočne jednoduché, populárne heslá.

Vyhľadajte napríklad hash 827ccb0eea8a706c4c34a16891f84e7b a hneď vo vyhľadávaní uvidíte, že to je heslo '12345'.

Hashe dostatočne zložitých hesiel týmto spôsobom nejde rozlúštiť (skúste).

Môžete sa opýtať, v čom je potom problém - nech sa všetci zaregistrujeme so zložitými heslami. Je tu však problém - väčšina používateľov nemyslí na bezpečnosť svojich údajov a môžu zadávať dosť jednoduché heslá.

Môžeme pri registrácii nútiť vymýšľať dlhšie heslá, obmedzovaním napríklad minimálneho počtu znakov na 6 alebo 8, avšak aj tak sa budú objavovať heslá ako '123456' alebo '12345678'.

Samozrejme, môžeme vymyslieť inteligentnejší algoritmus kontroli zložitosti hesla, ale existuje iné riešenie.

Podstatou tohto riešenia je: heslá treba posoliť. Soľ - je to špeciálny náhodný reťazec, ktorý sa pridá k heslu počas registrácie a hash sa už bude počítať nie z jednoduchého hesla, ale z reťazca soľ+heslo, teda z osoleného hesla.

To znamená, že pri registrácii urobíte niečo takéto:

<?php $salt = '1sJg3hfdf'; // soľ - zložitý náhodný reťazec $password = md5($salt . $_POST['password']); // premeníme heslo na osolený hash ?>

Soľ bude pre každého používateľa iná, treba ju generovať náhodne v čase registrácie.

Tu je hotová funkcia, ktorá to urobí:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // dĺžka soli for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // znak z ASCII tabuľky } return $salt; } ?>

Pomocou tejto funkcie môžeme prepísať náš kód takto:

<?php $salt = generateSalt(); // soľ $password = md5($salt . $_POST['password']); // osolené heslo ?>

Ešte raz zopakujem, že toto boli zmeny pri registrácii - do DB ukladáme nie jednoduchý hash hesla, ale hash osoleného hesla.

To ešte nie je všetko: v tabuľke s používateľmi okrem pola login a password je potrebné vytvoriť aj pole salt, v ktorom budeme ukladať soľ každého používateľa.

Realizujte vyššie opísanú registráciu s osoleným heslom.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť