Tárolása jelszavakat használó PHP crypt (), az alkalmazások Yii

Tárolása jelszavakat a web-alkalmazás

Számos példa van és anyagok, amelyek megmutatják, hogyan kell tárolni a jelszavakat az adatbázisban.

Gyakran le módszereket kifogásolható, és hajlamos a repedésre. A hálózat számos esettanulmány azt mutatják, hogyan kell csinálni rossz.







A gyakorlatban alkalmazó rendszerek hozzáférés jelszóval adatokat semmilyen módon nem hivatkozhat, amit a felhasználó alkotók „komplex” jelszót, így a regisztráció során. A „bonyolult” jelszó a támadó, nem a felhasználó. Szintén tévesen azt hiszik, hogy a rendszer annyi biztonságban, hogy a támadó nem lesz képes, hogy egy szeméttelep egy tábla vagy egy fájl jelszóval vagy hasist. Ebből az következik, hogy szükség van, hogy még az ilyen készítmények egy szeméttelep, a támadó nem vele, vagyis az információ használhatatlan vele.

Egy nagyon gyakori hiba gyors hash-eket. Például MD5 - algoritmus nagyon gyors, de mint minden SHA algoritmus. Például az NVIDIA GeForce 8800 tud generálni 200 millió MD5 hash másodpercenként. Ebből az következik, hogy a használata a gyors hash algoritmusok, még egy kis „só” nem hatékony. A szokásos nyers erő lehet viszonylag gyorsan felvenni a hash, és így a felhasználó jelszavát. E rendszer szerint tárolására jelszavakat md5 ( „jelszó”) - lehet tekinteni, mint nyitott a támadó.

Például a szerver kiszámításához egy hash algoritmus md5 átlagosan szükséges 10mksek. A jelszót az adatbázisban tárolt, mint egy hash-t a megadott érték a felhasználó (md5 ( „jelszó”)). A támadó valahogy adatbázis felhasználói nevek és jelszavak hash re próbálják megfejteni őket. dekódoló algoritmus nagyon egyszerű - túl sok. Egyértelmű, hogy kiszámítható ezer hash szükséges 10mksek * 1000 = 10 ms, egymillió 10mksek * 1000000 = 1 másodperc, stb Ebből az következik, hogy a gyorsabb algoritmus, annál gyorsabb a támadó fogja kiválasztani a nagyobb számú jelszavak rövidebb idő alatt. A fentiekből Szanov egyértelmű, hogy a lassabb algoritmust a hash függvény, annál megbízhatóbb.







Gömbhal - kriptográfiai algoritmus valósítja szimmetrikus titkosítási blokk. Ez fogyaszt egy viszonylag nagy mennyiségű számítási erőforrások, és most úgy egy meglehetősen jó kriptográfiai algoritmus jelszavak titkosításához. A PHP a végrehajtásra egy egyszerű hívást crypt (). Hasonló egész súlyozási paraméter történik oly módon, hogy brute force támadással már elég lassú, és a hash számítás a felhasználó láthatatlan idővel. 200-300 ms a termelési kiszolgáló elegendő erre.

További ellenálló hash sót adunk hozzá. Sol - egy szót, kifejezést, véletlenszerűen hőmérsékleti érték dinamikus mutáció mindkét amit adunk önkényesen, hogy kialakítsuk a végső hash. Például md5 ($ password. Md5 ($ só)). Minden jelszót kell kialakítani egy egyedi hash só. A cél a só dobavlneniya - méretének növelésével a szótár támadás brute force típusú szótárban vagy szivárványos táblákat. Sót, melynek együtt Blowfish, nem feltétlenül kell kriptográfiai ellenálló véletlenszerű karaktersorozat. Elég, hogy egy sót egy pszeudo-véletlen számok, ez elég ahhoz, hogy megakadályozza a kiválasztás a jelszó szivárvány táblázatok.

Források szerint a jelenlegi számítógépes rendszer jelszó találgatás skrost használata nyers erő, egyre gyorsabban. Ha a szoftver még mindig a régi jelszót hash algoritmusok, talán van értelme gondolkodni algoritmus megváltoztatását.

Használata crypt () PHP jelszó tárolás

crypt () visszaadja a kivonatolt karakterlánc keresztül szerzett szabványos UNIX algoritmus a DES, vagy egy másik algoritmust, amely elérhető a rendszer.

Sol által meghatározott hasító módszerrel. Mert Blowfish-titkosítás, a formátum: „$ 2a $”, súlyozási paraméter két számjegy, a „$”, és 22 számokat az ABC „./0-9A-Za-z”. Az egyéb szimbólumok só jár visszatér egy üres karakterlánc. Súlyozása paramétere a két szám bináris logaritmusa számláló iterációinak mögöttes algoritmus alapján Blowfish, és kell a tartományban 04-31, értékek ezen a tartományon kívül fog okozni crypt () hiba. Például:

Felhívjuk figyelmét, hogy az első 29 karakter a visszaadott érték megegyezik a sót.

Ha hozzá az eredményt, hogy vagy nincs változás só:

És ennek megfelelően, ha az eredmény a kripta funkciót alkalmazni bejegyzést, só, ugyanabban a sorban, a végrehajtásának eredményeképpen ugyanaz lesz só:

A természetvédelmi alapelvekkel jelszó együtt a kripta:

- az egyetlen lemezboltban jelszó hash és a sót, a jelszó egyértelműen nem adja;

- A visszaadott érték a függvény végrehajtása kripta - só heshom;

- kripta ignoriouet extra karaktereket a string-sók;

létrehozása hash