Zaheslování hesel :-)
18 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Mám následující problém: Chtěl bych nechat uživatele se registrovat (to není problém) a přihlašovat se (to taky není problém). Ten problém tkví v něčem jiném - rád bych nějak zabezpečil ta uživatelská hesla. Četl jsem o SaltedHashi (Interval.cz), ale nevím, jak to provést na WZ, pokud to samozřejmě jde. Takže když to shrnu, jsou tu dvě otázky: 1) Jak zabezpečit ta hesla? 2) A jde to vůbec na WZ? Předem díky, Shippy
-
tak ty hesla ukládej zašifrovaný funkcí crypt() a máš to..
-
md5 je také velice používaná asymetrická (dokonce jednostranná) metoda šifrování... v praxi celkem používaná, od 7 heslovaných znaků prakticky velice zdlouhavě prolomitelná.
-
Shippy: crypt() je prave ten salted hash, a je tudiz lepsi. Ad bod 2: Ano
-
Shippy: crypt() vyrabi prave ten salted hash, a je tudiz lepsi. Ad bod 2: Ano
-
1. crypt() 2. jo
-
Takže ve chvíli, kdy se u mě někdo pokusí zaregistrovat - před odesláním do databáze použiju něco jako $heslo=crypt(heslo); ? A když se někdo pokusí přihlásit, tak udělám s tím heslem, které se ověřuje ($q="SELECT * FROM users WHERE login='$login' AND heslo='$heslo'";), to samé? Tj. že ještě před zavoláním mysql_query() zakryptuju funkcí crypt() to heslo? Omlouvám se, mám malou představivost a žádnou zkušenost. Díky vám ty vaše zkušenosti :-)
-
shippy: presne tak
-
Počkat musíš ošetřit aby před přihlášením se heslo zacryptovalo
-
Použít se dá i funkce SQL password, takže pak kontroluješ jestli uživatele přihlásíš např. takhle: SELECT * FROM uzivatele WHERE (jmeno='$jmeno' AND heslo=password('$heslo'))
-
ALe crypt hází pokaždé jinou hodnotu stejného řetězce ne ?
-
Samozrejme ze ne. crypt() i md5() musi na ten samy vstupni retezec vzdycky vratit ten samy vystupni retezec. Jinak by to nebyly funkce na kryptovani retzece, ale spis na jeho znehodnoceni.
-
Mno já co si pamatuju tak mi to přesně tohle dělalo, crypt .. pokaždý jiný .. mno to je fuk asi bug
-
Mike: to je zcela korektni. Pokud nespecifikujes salt, php ho nadone vygeneruje. Algoritmus hashe je saltem ovlivnen. Pouzijes-li vystup cryptu() jako salt pro crypt() puvodniho retezce, dostanes ten samy vystup, jako salt. Je to trochu zmateny na prvni pohled, ale na ten druhej je to o dost propracovanejsi hashovani.
-
iirc, crypt() pouziva jeho systemovou implementaci, tudiz muze na ruznych platformach generovat ruzne vysledky. byt tebou bych pouzil neco prenositelnejsiho - sha1(), md5(), ...
-
pripadne crypt() a specifikovat mu metodu, co ma puzit, samozrejme :-)
-
A můžu se zeptat, jak se specifikuje ta metoda? V oboru zabezpečování jsem naprosto mimo.
-
On systems where the crypt() function supports multiple encryption types, the following constants are set to 0 or 1 depending on whether the given type is available: * CRYPT_STD_DES - Standard DES-based encryption with a two character salt * CRYPT_EXT_DES - Extended DES-based encryption with a nine character salt * CRYPT_MD5 - MD5 encryption with a twelve character salt starting with $1$ * CRYPT_BLOWFISH - Blowfish encryption with a sixteen character salt starting with $2$ or $2a$