⊗ppPmAuRHS 424 of 447 menu

Přidání soli do registrace

Takže už víte, že hashování pomocí md5 - je nevratný proces a hacker, který získá přístup k hashi, nebude moci získat z tohoto hashe heslo.

Ve skutečnosti toto tvrzení není úplně správné - v současné době zlí hackeři sestavili knihovny hashů populárních a méně populárních hesel a každý hlupák může heslo rozluštit prostě vygooglením jeho hashe.

Jde o dostatečně jednoduchá, populární hesla.

Vygooglete například hash 827ccb0eea8a706c4c34a16891f84e7b a hned ve vyhledávání Googlu uvidíte, že to je heslo '12345'.

Hashe dostatečně složitých hesel tímto způsobem nelze rozluštit (zkuste).

Můžete se ptát, v čem je pak problém - pojďme se všichni registrovat se složitými hesly. Existuje však problém - většina uživatelů nepřemýšlí o bezpečnosti svých dat a mohou zadávat dostatečně jednoduchá hesla.

Při registraci můžeme nutit vymýšlet delší hesla tím, že omezíme například minimální počet znaků na 6 nebo 8, avšak i tak se budou objevovat hesla jako '123456' nebo '12345678'.

Lze samozřejmě vymyslet chytřejší algoritmus kontroly složitosti hesla, ale existuje jiné řešení.

Podstata tohoto řešení je taková: hesla je třeba posolit. Sůl - je speciální náhodný řetězec, který se přidá k heslu při registraci a hash se bude počítat ne z prostého hesla, ale z řetězce sůl+heslo, tedy z osoleného hesla.

To znamená, že při registraci budete dělat něco takového:

<?php $salt = '1sJg3hfdf'; // sůl - složitý náhodný řetězec $password = md5($salt . $_POST['password']); // převedeme heslo na osolený hash ?>

Přičemž sůl bude pro každého uživatele jiná, je třeba ji generovat náhodně v momentě registrace.

Zde je hotová funkce, která to udělá:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // délka soli for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // znak z ASCII tabulky } return $salt; } ?>

S pomocí této funkce můžeme přepsat náš kód takto:

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

Ještě jednou zopakuji, že to byly změny při registraci - do databáze ukládáme ne prostý hash hesla, ale hash osoleného hesla.

To ještě není vše: v tabulce s uživateli kromě pole login a password je třeba vytvořit ještě pole salt, ve kterém budeme ukládat sůl každého uživatele.

Realizujte výše popsanou registraci s osoleným heslem.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout