A php mysql webhelyeken tárolt jelszavak biztonságos tárolása

Napjainkig sokan tartják a jelszavakat az adatbázisban, egyszerűen csak md5-vel vagy a SHA-1-vel határoznak meg, ami alig észrevehető biztonságot nyújt. Egy elavult és már nem megbízható md5-ben sok ütközés van, és meglehetősen nagy és általánosan elérhető szivárványtáblákat is kiszámítanak. Az SHA-1-es helyzet csak kissé jobb.







A só és ellenállóbb darabolási algoritmus jelentősen növeli a megbízhatóságot, de még hosszú Számolja ki hash - nem egy nagyon nehéz feladat a modern rendszerek, különösen, mivel a számítások elkezdte vonzani a GPU. Ezért érdemes használni egy olyan algoritmus, hogy működni fog, így lassan megbízhatóságának növelése jelszó titkosítást, ami Számolja ki szivárvány táblázatok és brute force támadások egyre teljesen hatástalan. Ezt a jól ismert bcrypt függvény teszi. A visszafordíthatatlan titkosításhoz sok iterációval rendelkező blowfish algoritmust használ, és nagyon lassan működik. Megváltoztatásával az iterációk számát lehet beállítani a szükséges időt, hogy titkosítja a jelszót, és talál egy „középutas” titkosításakor jelszó lesz elég gyors, és az ő választása lesz értelme.







A PHP-ben van egy beépített függvény crypt (), amely a bcrypt végrehajtása. A PHP 5.3 és újabb verziói esetén a crypt () függvény beépített titkosítási algoritmusokkal rendelkezik, és többé nem függ az algoritmusoknak az operációs rendszer által támogatott használatától. Ez a függvény különböző algoritmusokat támogat, a DES-től az SHA-512-ig, és kiválasztja az algoritmust, attól függően, hogy melyik sót állítja be paraméterként.

Az alábbiakban egy egyszerű, egysoros só generátort kívánok kínálni. A crypt () funkció betáplálásával ez a só a négyzetes iterációban 10-et használ a blowfish használatával. Ez meghatározza az azonosító $ 2a $ (használatra bcrypt), majd elérve a iterációk száma, amelyek meghatározása a logaritmusa bázis 2 (ebben az esetben, azaz a 2 10. 1024 iteráció. Növelése paramétert egy megduplázza az iterációk, és így az idő függvényében számítások .

A só 30 bájt hosszú lesz, ebből 22 hasznos és 8 szolgáltató. A kiszolgálón (Xeon E5520, 2,24 GHz) egy jelszó kiszámítása így 0,12 másodpercet vesz igénybe - ami nagyon sok. A kimenet 60 bájt hosszúságú sorozatot kap.




Kapcsolódó cikkek