ugrás a tartalomhoz

MD5 nem megy...

Anonymous · 2005. Már. 9. (Sze), 07.53
Hello mindenki!
MD5-ös titkosítást szeretnék használni. Van egy felhasználónév-jelszó páros egy MySQL adatbázisban. A jelszót a PHP MD5-ös algoritmusával titkosítottam, és az így kapott hash-t eltároltam az adatbázisban. A felhasználók azonosításánál a szkript a beírt jelszóból MD5-ös hash-t kreál, majd ezt összehosonlítja az adatbázisban találhatóval.
Ennek szerintem így a gyakorlatban is működnie kéne. Kéne... Ugyanis nem működik. A beléptetőoldal egész más hash-t generál ugyanarra a jelszóra, mint amit én előzőleg generáltam. Ami még probléma, hogy mindig ugyanazt a hash-t generálja, bármit írok be.

Hol ronthattam el?

Itt van az azonosítást végző forráskód-részlet:

function jelszoEllenorzes( $nev, $jelszo ) {
	global $kapcsolat;
	$md5jelszo = md5($jelszo);
	$eredmeny = mysql_query( "SELECT * FROM users WHERE BINARY nev='$nev' AND BINARY jelszo='$md5jelszo'", $kapcsolat );
	if ( ! $eredmeny )
		die ( "Adatbázis hiba: " . mysql_error() );
	if ( mysql_num_rows( $eredmeny ) )
		return mysql_fetch_array( $eredmeny );
	return false;
}
 
1

írasd ki a változókat

VBala · 2005. Már. 9. (Sze), 10.16
Szinte biztos, hogy nem kapja meg a scripted amit beírsz, különben nem generálná ugyanazt a hash-t.
2

Az md5 ezt is lekódolja :

ppshungary · 2005. Már. 9. (Sze), 11.06
Az md5 ezt is lekódolja : $jelszo="";

méghozzá így: d41d8cd98f00b204e9800998ecf8427e
Ha ismerős, akkor nullstringet kap a függvény!!!!

PPS
4

Valóban nem kapta meg a

Anonymous · 2005. Már. 9. (Sze), 17.00
Valóban nem kapta meg a stringet. Figyelmetlen voltam. Régebben a PHP 5-ös verzióját használtam, most a 4.3.4-et használom. A PHP5 simán megette a formból POST-olt adatok, nem kellett a $_POST tömböt használnom. Rájöttem, hogy a PHP4-nél kell...
Mostmár megy rendben, köszönöm a segítséget!
6

Álljunk megy egy szóra!

Poetro · 2005. Már. 9. (Sze), 17.49
Ez nem verziófüggő!
Vszínű a PHP5-ödben (teljesen helytelenül) be volt állítva a register_globals értéke igazra, és akkor ugye szolgáltatja is a változókat.
Mindenképpen érdemes ennek értékét hamisra tenni, és így dolgozni a későbbi problémá, esetleg egész projektek átírásának elkerülése végett.
Úgyhogy a PHP4 jól csinálja amit csinál, és a PHP5-ödet is így kellett volna beállítani.
--------
Poetro
3

Változó elkülönítés

monghuz · 2005. Már. 9. (Sze), 16.24
Hali!
Szerintem probáld ki igy:

$eredmeny = mysql_query( "SELECT * FROM users WHERE nev = '".$nev."' AND jelszo = '".$md5jelszo."' ", $kapcsolat );

a mysql lekérdezésbe ha változót írsz be akkor azt igy : '".$változó."' én erre tippelnék, mert küzdöttem ezzel elég sokat még az elején...

amúgy szerintem a BINARY -sem kell oda, ha csak nincsen változás a karakter kódolásban...

hali: Tomi
5

A lekérdezés

Anonymous · 2005. Már. 9. (Sze), 17.02
A lekérdezés szintaktikájával nem volt semmi probléma! Igazából a colorer tag egy kicsit átalakította. A BINARY-t azért használom, hogy case sensitive legyen a lekérdezés.