Autor Zpráva
muflik
Profil *
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 *
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
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 *
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 *
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 *
nefunguje to ani takto
if ($passDB == md5($password.$username))
:(
tiso
Profil
muflik: čuduješ sa?
$passDB = substr(mysql_result($result,0),-33);//poslednych 33 znakov, tu ma byt prvych 32!
edit: nauč sa debugovať skript, či v tých premenných máš to, čo tam chceš mať.
muflik
Profil *
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 *
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 *
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
karel: ???
karel_
Profil *
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 *
tiso: ???(?)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0