⊗ppPmAuRHS 424 of 447 menu

Suolan lisääminen rekisteröintiin

Siis, tiedät jo, että hashaus md5:llä on peruuttamaton prosessi ja hakkeri, joka saa pääsyn hashiin, ei voi saada salasanaa tästä hashista.

Itse asiassa tämä väite ei ole aivan totta - nykyään pahat hakkerit ovat koonneet suosittujen ja vähemmän suosittujen salasanojen hash-kirjastoja, ja kuka tahansa voi selvittää salasanaa yksinkertaisesti googlaamalla sen hashin.

Kyse on riittävän yksinkertaisista, suosituista salasanoista.

Googlaa esimerkiksi hash 827ccb0eea8a706c4c34a16891f84e7b ja näet heti Googlen haussa, että se on salasana '12345'.

Riittävän monimutkaisten salasanojen hasheja ei voi selvittää tällä tavalla (kokeile).

Voit kysyä, missä on sitten ongelma - rekisteröidytään kaikki monimutkaisilla salasanoilla. Siinä on kuitenkin ongelma - useimmat käyttäjät eivät ajattele tietojensa turvallisuutta ja voivat käyttää riittävän yksinkertaisia salasanoja.

Voimme rekisteröinnissä pakottaa keksimään pitempiä salasanoja rajoittamalla esimerkiksi vähimmäismäärää merkkejä 6:lla tai 8:lla, mutta silti ilmestyy salasanoja kuten '123456' tai '12345678'.

Voi tietysti keksiä älykkäämman algoritmin salasanan monimutkaisuuden tarkistamiseksi, mutta on toinen ratkaisu.

Tämän ratkaisun ydin on: salasanoja täytyy suolata. Suola on erityinen satunnainen merkkijono, joka lisätään salasanaan rekisteröinnissä ja hash lasketaankin ei yksinkertaisesta salasanasta, vaan merkkijonosta suola+salasana, eli suolatusta salasanasta.

Eli rekisteröinnissä teet jotain tällaista:

<?php $salt = '1sJg3hfdf'; // suola - monimutkainen satunnainen merkkijono $password = md5($salt . $_POST['password']); // muunnetaan salasana suolatuksi hashiksi ?>

Tällöin suola on erilainen jokaiselle käyttäjälle, se on generoitava satunnaisesti rekisteröinthetkellä.

Tässä on valmis funktio, joka tekee tämän:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // suolan pituus for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // merkki ASCII-taulukosta } return $salt; } ?>

Tämän funktion avulla voimme kirjoittaa koodimme uudelleen näin:

<?php $salt = generateSalt(); // suola $password = md5($salt . $_POST['password']); // suolattu salasana ?>

Toistan vielä, että nämä olivat muutoksia rekisteröinnissä - tietokantaan tallennamme ei pelkkää salasanan hashia, vaan suolatun salasanan hashin.

Ei siinä kaikki: käyttäjien taulukkoon lisäksi kenttiin login ja password tarvitaan myös kenttä salt, jossa voimme tallentaa kunkin käyttäjän suolan.

Toteuta edellä kuvattu rekisteröinti suolatuilla salasanoilla.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää