Autor Zpráva
CATerPILAR
Profil *
Ahoj mám dotaz,

jaký datový typ musím mít v MySQL u sloupečeku "password", abych ho mohl porovnávat v proměnnou $heslo odeslanou z formuláře?

Podotýkám, že proměnná $heslo je šifrovaná pomocí jednosměrné hahshovací funkce md5.

dík
Martin.
Falcon16
Profil
ak pouzivas md5 v php scripte, tak ti staci mat pre stlpec v tabulke typ varchar. velkost daj asi 50, nie som si isty, ale presne by to malo byt 32 znakov max. no a porovnanie prebehne priamo v scripte, ked si z databaze vytiahnes to kodovane heslo, das ho do premennej napriklad $dbheslo a porovnas s heslom s ktorym chces. takze:

IF ( MD5($heslo) == $dbheslo )
{ECHO "heslo je spravne";}

nieco v tom zmysle. zakodujes heslo ktore ides porovnavat a porovnas ho s tym z databaze
CATerPILAR
Profil *
nebylo mi jasné jak lze porovnávat zašifrovaný řetezec s typem varchar, ale funguje to.
koudi
Profil
ono totiž ten zašifrovaný řetězec je typu varchar...
Leo
Profil
Rekl, bych, ze po pouziti fce md5 je retezec nikoliv VARCHAR, ale CHAR a to primo CHAR(32), Leo
CATerPILAR
Profil *
Tak nevim, kdyz to mam takhle tak to nefunguje
$result = mysql_query("select * from users where username='$jmeno'",$db);
while ($vypis = mysql_fetch_array($result))
{$dbheslo=M$vypis[2];}
echo $dbheslo;
if (MD5($heslo)==$dbheslo){
...

kdyz nepouziju MD5, tak to funguje.
Leo
Profil
Obligatni otazka - co to znamena funguje/nefunguje? Vypiste si proste $heslo, md5($heslo) a $dbheslo a uvidite kde mate problem, neposlal jste dalsi podstatne kusy kodu / napr. jak to heslo ukladate pri registraci, odkud a jak berete $heslo, atd. Leo
Rob
Profil
Já používám na hesla v md5 VARCHAR(32) a je to bez problémů.
simka00
Profil
jaký je rozdíl v šifrování pomocí php - md5() a mysql - PASSWORD()?
Rob
Profil
md5 dělá 32 znaků a PASSWORD 16. Což je podle mě lepší samo s sobě. Používat md5 je lepší i v tom, že když se posílají data do databáze, tak jsou už zakódovaná a když používáš PASSWORD(), tak se kódují až v databázi. Takže když by někdo odposlouchával, tak si v klidu všechna hesla přečte. Teda aspoň takhle to chápu já.
CATerPILAR
Profil *
Pokusím se to tedy přiblížit.
$dbheslo se ulozi do databaze pres registracni formular.
$heslo se ziska z prihlasovaciho formulare.
kdyz porovnavam if($heslo==$dbheslo)........do systému se přihlasím

kdyz porovnavam if(md5($heslo)==$dbheslo)........do systému se nepřihlasím a píše že uvedené heslo neexistuje.

$bdheslo je typu varchar(32).
koudi
Profil
zkus se přes phpadmina podivat jaký máś v tý databázi hodnota u těch hesel a pak to porovnat s tim md5 otiskem.
stribny
Profil
$dbheslo se ulozi do databaze pres registracni formular. - ale pred ulozenim ho musis logicky zakodovat, coz nepises.. pak by to melo chodit
mitr
Profil
Já používám sha1 a pro jistotu ještě 2x za sebou ;-)
v databázi je tedy sha1(sha1("heslo")) a při přihlašování mám JS který udělá to samé, takže od klienta se posílá už jenom 2x SHA1 :))) takže kdyby se mi náhodou někdy někdo dostal do databáze nebo do jakýchkoliv LOG souborů na serveru, tak z toho to heslo IMHO nikdy nedostane :)
Kajman_
Profil *
mitr

Pokud se někdo koukne do db, tak se přeci musí bez problému za kohokoliv příhlasit, stačí si upravit js.

V té bezpečnosti nejde ani tak o to, aby nevěděl heslo, ale aby se tam nikdo cizí nemoh nalogovat... pokud možno i když se nějakým nedopatřením koukne do db.
*Čvachta*
Profil *
Když jsme u MD5 je pravda že byla tahle metoda prolomena?
Rob
Profil
*Čvachta*
To by mě takly zajímalo!! A jak?? Když už jsme u toho.
*Čvachta*
Profil *
http://ug.cz/1035
stribny
Profil
Dneska MD5 údajně na obyčejném stroiji do půl minuty.
peki
Profil
hej...jedna sa o to aby pokial ti niekto nabural databazu aby si neodniesol pekne hned pouzitelne nezasifrovane udaje....
kym odkoduje hash,trocha to potrva.... a nie kazdy kto dokaze prelomit databazu dokaze desifrvat hash....ale md5 prelomili.....
Acci
Profil
*Čvachta*
To je jasné. Je logické, že některé řetězce musí kolidovat. Spíš je problém, že ty kolizní řetězce jdou najít tak rychle. I když, to prolomení nás nemusí zajímat, pokud jen hashujeme hesla. Nejde totiž najít kolidující řetězec k již existujícímu hashi.
Toto téma je uzamčeno. Odpověď nelze zaslat.