Autor | Zpráva | ||
---|---|---|---|
CATerPILAR Profil * |
#1 · Zasláno: 25. 12. 2005, 22:41:06
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 |
#2 · Zasláno: 25. 12. 2005, 22:59:53
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 * |
#3 · Zasláno: 25. 12. 2005, 23:19:12
nebylo mi jasné jak lze porovnávat zašifrovaný řetezec s typem varchar, ale funguje to.
|
||
koudi Profil |
#4 · Zasláno: 25. 12. 2005, 23:34:33
ono totiž ten zašifrovaný řetězec je typu varchar...
|
||
Leo Profil |
#5 · Zasláno: 25. 12. 2005, 23:49:35
Rekl, bych, ze po pouziti fce md5 je retezec nikoliv VARCHAR, ale CHAR a to primo CHAR(32), Leo
|
||
CATerPILAR Profil * |
#6 · Zasláno: 26. 12. 2005, 15:21:49
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 |
#7 · Zasláno: 26. 12. 2005, 17:07:27
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
|
||
Časová prodleva: 3 dny
|
|||
Rob Profil |
#8 · Zasláno: 29. 12. 2005, 13:02:10
Já používám na hesla v md5 VARCHAR(32) a je to bez problémů.
|
||
simka00 Profil |
#9 · Zasláno: 29. 12. 2005, 13:07:10
jaký je rozdíl v šifrování pomocí php - md5() a mysql - PASSWORD()?
|
||
Rob Profil |
#10 · Zasláno: 29. 12. 2005, 13:33:47
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 * |
#11 · Zasláno: 30. 12. 2005, 12:34:51
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 |
#12 · Zasláno: 30. 12. 2005, 13:46:23
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.
|
||
Časová prodleva: 2 měsíce
|
|||
stribny Profil |
#13 · Zasláno: 21. 2. 2006, 13:21:13
$dbheslo se ulozi do databaze pres registracni formular. - ale pred ulozenim ho musis logicky zakodovat, coz nepises.. pak by to melo chodit
|
||
Časová prodleva: 15 dní
|
|||
mitr Profil |
#14 · Zasláno: 8. 3. 2006, 17:43:16
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 * |
#15 · Zasláno: 8. 3. 2006, 17:57:50
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 * |
#16 · Zasláno: 8. 3. 2006, 18:00:58
Když jsme u MD5 je pravda že byla tahle metoda prolomena?
|
||
Rob Profil |
#17 · Zasláno: 8. 3. 2006, 18:24:59
*Čvachta*
To by mě takly zajímalo!! A jak?? Když už jsme u toho. |
||
*Čvachta* Profil * |
#18 · Zasláno: 8. 3. 2006, 18:43:09
|
||
Časová prodleva: 1 měsíc
|
|||
stribny Profil |
#19 · Zasláno: 15. 4. 2006, 21:28:42
Dneska MD5 údajně na obyčejném stroiji do půl minuty.
|
||
Časová prodleva: 5 dní
|
|||
peki Profil |
#20 · Zasláno: 20. 4. 2006, 21:53:26
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 |
#21 · Zasláno: 20. 4. 2006, 22:02:41
*Č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. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0