Autor | Zpráva | ||
---|---|---|---|
muflik Profil * |
#1 · Zasláno: 19. 10. 2010, 20:04:26
Dobrý den, napojuji na joomla databázi vlastní aplikaci a v databázi mám hesla ve tvaru 2f59a5b85463abf97413a2e78b72b9fe:acyc3lNHlAP7YZUFyWxxfvb4bRQ1K8hb
a rád bych věděl jak proti tomu ověřit když mi například uživatel Lenka zadá heslo 123456 hash je rozdělen dvojtečkou tak předpokládám, že jedno z toho bude md5('123456') a druhé například md5('Lenka') takže si to představuji nějak takto if (md5('123456').":".md5('Lenka') == "2f59a5b85463abf97413a2e78b72b9fe:acyc3lNHlAP7YZUFyWxxfvb4bRQ1K8hb"){ echo "Jste přihlášen"; } else { echo "Zkuste to znovu.";} na internetu je k tomu spousta příspěvků, ale každý tvrdí něco jiného, a potřeboval bych to vědět přesně abych mohl napsat ověřovací funkci děkuji moc. |
||
muflik Profil * |
#2 · Zasláno: 19. 10. 2010, 20:45:51
sepsal jsem něco takového bohužel to ale nefunguje :-(
<?php if (isset($_POST['username']) && isset($_POST['password'])){ $username=addslashes($_POST['username']); $password=addslashes($_POST['password']); $salt = substr(md5($username), strpos(md5($username), ':') + 1); $password = md5($password.$salt).':'.$salt; $query="SELECT password FROM jos_users WHERE username='$username' LIMIT 1"; $result = mysql_query($query); if ($result && mysql_num_rows($result)){ $pass = mysql_result($result,0); } else { $pass = NULL; } if ($password == $pass){ echo "Jste IN;"; $prihlasen=true; } else {echo "Jste OUT";} } echo " <form action='' method='post'> <input type='text' name='username' value='Vaše jméno'> <input type='password' name='password'> <input type='submit' name='submit'> </form>"; ?> |
||
tiso Profil |
#3 · Zasláno: 19. 10. 2010, 20:52:37
muflik: nájdi si ako je to v joomle:
-vyber heslo z db, kde username=$username -rozdeľ heslo na dbheslo a $dbsalt -skontroluj či sa dbheslo == md5($heslo.$dbsalt) |
||
muflik Profil * |
#4 · Zasláno: 19. 10. 2010, 21:06:58
tak sjem to upravil na
<?php if (isset($_POST['username']) && isset($_POST['password'])){ $username=addslashes($_POST['username']); $password=addslashes($_POST['password']); $salt = substr(md5($username), strpos(md5($username), ':') + 1); $password = md5($password.$salt).':'.$salt; $query="SELECT password FROM jos_users WHERE username='$username' LIMIT 1"; $result = mysql_query($query); if ($result && mysql_num_rows($result)){ $passDB = substr(mysql_result($result,0),-33); $saltDB = substr(mysql_result($result,0),33); } else { $passDB = NULL; $saltDB= NULL;} /* if ($password == $pass){ echo "Jste IN;"; $prihlasen=true; } else {echo "Jste OUT";} */ if ($passDB == md5($password.$saltDB)) { echo "Jste IN;"; $prihlasen=true; } else {echo "Jste OUT";} } echo " <form action='' method='post'> <input type='text' name='username' value='Vaše jméno'> <input type='password' name='password'> <input type='submit' name='submit'> </form>"; ?> ale bohužel |
||
muflik Profil * |
#5 · Zasláno: 19. 10. 2010, 21:16:30
našel jsem chybu takto je to správně, ale přesto to nefunguje
$passDB = substr(mysql_result($result,0),0,-33); $saltDB = substr(mysql_result($result,0),-33); |
||
muflik Profil * |
#6 · Zasláno: 19. 10. 2010, 21:18:50
nefunguje to ani takto
if ($passDB == md5($password.$username)) |
||
tiso Profil |
#7 · Zasláno: 19. 10. 2010, 21:19:44 · Upravil/a: tiso
muflik: čuduješ sa?
$passDB = substr(mysql_result($result,0),-33);//poslednych 33 znakov, tu ma byt prvych 32! |
||
muflik Profil * |
#8 · Zasláno: 19. 10. 2010, 21:24:54
ještě jsem to finálně upravil na a opravdu už nevím.
<?php if (isset($_POST['username']) && isset($_POST['password'])){ $username=addslashes($_POST['username']); $password=addslashes($_POST['password']); $query="SELECT password FROM jos_users WHERE username='$username' LIMIT 1"; $result = mysql_query($query); if ($result && mysql_num_rows($result)){ $passDB = substr(mysql_result($result,0),0,-33); $saltDB = substr(mysql_result($result,0),-33); } else { $passDB = NULL; $saltDB= NULL;} if ($passDB == md5($password.$saltDB)) { echo "Jste IN;"; $prihlasen=true; } else {echo "Jste OUT";} } ?> |
||
muflik Profil * |
#9 · Zasláno: 19. 10. 2010, 21:27:39
Ajo já jsem si to vypisoval i jsem si to hodil pod sebe v notepadu ale ta dvojtečka mi nějak utekla.. už to funguje díky moc !
|
||
karel_ Profil * |
#10 · Zasláno: 19. 10. 2010, 21:28:08
Pokud nevylustis z ceho se generuje salt:
http://api.joomla.org/Joomla-Framework/User/JUserHelper.html http://forum.joomla.org/viewtopic.php?f=432&t=307427 tak si jen over jen prvni cast (explode, md5 hesla) = nebo malo bezpecne? |
||
tiso Profil |
#11 · Zasláno: 19. 10. 2010, 21:30:31
karel: ???
|
||
karel_ Profil * |
#12 · Zasláno: 19. 10. 2010, 21:32:30
protoze v J! pri instalaci:
// Create random salt/password for the admin user $salt = JUserHelper::genRandomPassword(32); $crypt = JUserHelper::getCryptedPassword($adminPassword, $salt); $cryptpass = $crypt.':'.$salt; |
||
karel_ Profil * |
#13 · Zasláno: 19. 10. 2010, 21:33:21
tiso: ???(?)
|
||
Časová prodleva: 14 let
|
0