Pagina 1 van 1

Gesaltte wachtwoorden

Geplaatst: 01 aug 2009, 18:46
door Robintje1
  • phpBB versie: 3.0.4
    Wat is de vraag?
Ik wil een soort game maken waarbij men hun forumaccount kan gebruiken. Maar het probleem is dat de wachtwoorden gesalt en geMD5'd zijn. Heeft één van jullie enig idee hoe ik dit kan doen bij een loginsysteem? (De MD5 is geen probleem, maar het salten wel...)

Re: Gesaltte wachtwoorden

Geplaatst: 01 aug 2009, 19:26
door Erik Frèrejean
Je bedoelt de phpBB wachtwoorden? Deze zijn niet een simpele salt en md5. Het hashing algoritme in phpBB is een stuk complexer en daardoor ook een stuk veiliger. Om een wachtwoord te checken tegen de gehachde variant gebruik de bool phpbb_check_hash (string $password, string $hash) functie die je in "includes/functions.php" kan vinden.

Re: Gesaltte wachtwoorden

Geplaatst: 01 aug 2009, 20:18
door Robintje1
Dus zoiets?:

Code: Selecteer alles

$wachtwoord = "hallo";
$hash = "1245094527";

if(phpbb_check_hash("$wachtwoord","$hash" == true)) {
 echo "Goed!";
} else {
 echo "Fout!";
}
Of moeten de double-quotes weg?
En... De $hash komt uit de kolom user_passchg.
Ofwel heb ik het niet goed gelezen...

Re: Gesaltte wachtwoorden

Geplaatst: 02 aug 2009, 00:05
door Erik Frèrejean
Nee, de hash die je als tweede argument geeft is de hash zoals hij is opgeslagen in de gebruikers tabel van je phpBB installatie, het wachtwoord is hetgeen de gebruiker invoert tijdens het inloggen.
Voorbeeld:

Code: Selecteer alles

$pass = request_var('password', '', true);
$user = request_var('username', '', true);

// Selecteer de hash
$sql = 'SELECT user_id, user_password
   FROM ' . USERS_TABLE . "
   WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($user)) . "'";
$result = $db->sql_query($sql);
if ($userrow = $db->sql_fetchrow($result))
{
   if (phpbb_check_hash($pass, $userrow['user_password']))
   {
      trigger_error('Ingelogd');
   }
   else
   {
      trigger_error('Incorrect wachtwoord');
   }
}
else
{
   trigger_error('Gebruiker bestaat niet');
}
$db->sql_freeresult($result); 
Even snel opgeschreven dus er kunnen fouten in zitten ;)

Re: Gesaltte wachtwoorden

Geplaatst: 02 aug 2009, 10:00
door Robintje1
Oké... Wat zijn die variabelen $db enz.? =P
(Heb al met veel gewerkt in PHP, maar met die '->' nog nooit... :P)

Re: Gesaltte wachtwoorden

Geplaatst: 02 aug 2009, 12:06
door Erik Frèrejean
$db bevat het phpBB DBAL object, deze wordt gebruikt door phpBB om met de database te communiceren.

http://nl.php.net/oop

Re: Gesaltte wachtwoorden

Geplaatst: 02 aug 2009, 14:50
door Robintje1
Ah ok... Dus kan ik eigenlijk de code gewoon overnemen?

Re: Gesaltte wachtwoorden

Geplaatst: 02 aug 2009, 14:52
door Erik Frèrejean
Ja, indien je de phpBB sessies gebruikt dan wel. Als je dat niet doet is het iets lastiger om de phpBB APIs te gebruiken.

Re: Gesaltte wachtwoorden

Geplaatst: 02 aug 2009, 14:55
door Robintje1
En includes/functions.php includen? Dan zou het moeten werken? En wat is die request_var?