1. IMPORTANT : Nouvelles mesures de sécurité - 2. Règles pour obtenir de l'aide dans les forums de support - 3. Restrictions des droits pour le groupe "Support suspendu"

Il est obligatoire de respecter les Règles de MyBB.fr : Version abrégée ou Version complète pour obtenir du support sur nos forums.

Les membres ayant un site/forum contrevenant aux règles de MyBB.support seront placés dans le groupe "Support suspendu" et ne bénéficieront plus du support du staff. Nous recommandons aux autres membres d'agir de même. Il ne s'agit pas d'un bannissement, le membre retrouvera son statut "normal" dès que sa situation sera conforme aux règles.

Nouveau : un Wiki en français : plus de détails.
Avant de soumettre votre problème, consultez-le, ainsi que la FAQ, sans oublier le moteur de recherche interne.


Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Réglé] Ûtilisation BDD
Mots-clés » Ûtilisation, bdd
18-11-2011, 17:05, (Modification du message : 23-11-2011, 22:29 par Malak.)
#1
Ûtilisation BDD
Bonjour a tous, voila je commence a travailler sur un module ANNEXE à mybb qui aurait besoin des logins de la base de données de MyBB de notre site.

Je vous explique en deux mots, j'aimerai utiliser la BDD users de MyBB de notre site pour se connecter via les pages web que je suis entrain de créer. Le soucis étant que en observant les BDD, je me rends compte que MyBB encrypte/hach les mots de passes et je ne trouve ni ou ni comment ...

Voulant partir de rien, je cherche a savoir quelle fonctions je dois utiliser pour transformer le mot de passe entré par mon utilisateur sur ma page pour qu'il corresponde a celui enregistré dans MyBB (s'il est correct bien évidemment) pour lui autoriser l'entrée sur ces pages requérant donc cette identification.

J'ai donc pour cela un formulaire créé expressément pour ca ... mais pour le champ du mot de passe ($_POST['mot_de_passe'] par exemple) je ne sais pas ce que je dois en faire pour qu'il soit "transformé" de la meme manière que dans les tables mybb_users.

Si quelqu'un a une information, aussi petite soit-elle, il me rendrait un grand service en me la communicant Smile

Bonne journée, Malak

P.S.: j’espère avoir été le plus clair possible.
Répondre
19-11-2011, 1:03, (Modification du message : 19-11-2011, 1:04 par MarechalSummers.)
#2
RE: Ûtilisation BDD
MyBB utilises un hashage spécifique dérivé du md5, avec un clé créée aléatoirement (elle est dans la table mybb_user, sous le nom de "salt")
C'est impossible de le déhasher.
Répondre
19-11-2011, 13:09, (Modification du message : 19-11-2011, 13:09 par JWH Smith.)
#3
RE: Ûtilisation BDD
L'algorithme du MD5 a récemment été percé, c'est pourquoi peu de développeurs l'utilisent de nos jours.
Cependant, pour vérifier le mot de passe d'un utilisateur, tu peux crypter la chaîne entrée en $_POST['mot_de_passe'], et la comparer à l'entrée dans la BDD.

La fonction de cryptage de MyBB est celle-ci :
Code PHP :
function salt_password($password$salt)
{
    return 
md5(md5($salt).$password);


Avec $salt, la valeur du champ salt de l'utilisateur (enregistré dans la BDD).

JWH Smith - Développeur web
Répondre
19-11-2011, 19:08,
#4
RE: Ûtilisation BDD
Ce que je cherche, c'est connaitre le type de hachage utilisé par MyBB pour pouvoir comparer la valeur dans les tables mybb_users et la valeur entrée par l'utilisateur.

Je pense que c'est exactement ce que Smith a posté, mais je ne comprends pas un truc.
MyBB encrypte le pass concaténé au md5 d'une clé créée de maniere aléatoire ? C'est ca ?

Donc ce qui est contenu dans la base de donnée, c'est le return de la fonction que tu m'as gentillement posté ?

Répondre
19-11-2011, 19:26,
#5
RE: Ûtilisation BDD
MyBB n'utilise aucune méthode aléatoire ou propre : il s'agit d'un cryptage par sel.
On récupère le sel associé à l'utilisateur (champ "salt" de la base de données), on le crypte en md5, puis on le suit du mot de passe saisi par l'utilisateur (ex: $_POST['password']). Le tout est alors recrypté en md5.

La façon de faire de MyBB est incomplète (et puis le cryptage md5 n'est plus sur depuis qu'il a été cracké), mais elle est assez commune.

JWH Smith - Développeur web
Répondre
20-11-2011, 19:52,
#6
RE: Ûtilisation BDD
okay donc c'est bien comme je l'avais imaginé.

Et le sel associé est défini à la ligne 936 de member.php ?

merci beaucoup pour ces reponses, c'est exactement ce que je cherchais, ca va m'aider enormément Smile
Répondre
20-11-2011, 20:57, (Modification du message : 20-11-2011, 20:58 par JWH Smith.)
#7
RE: Ûtilisation BDD
Le sel n'est pas défini dans un fichier, sinon il n'aurait pas grand intérêt... C'est enregistré dans le champ "salt" de l'utilisateur, comme je l'ai dit plus haut.

JWH Smith - Développeur web
Répondre
20-11-2011, 22:14,
#8
RE: Ûtilisation BDD
oui oui ... mais je pense que mybb le definit a cette ligne la :

Code PHP :
$password random_str(); 

ligne 936 de member.php
Répondre
20-11-2011, 22:36, (Modification du message : 20-11-2011, 22:36 par JWH Smith.)
#9
RE: Ûtilisation BDD
Il suffit de remonter un peu plus haut...

Code PHP :
if($mybb->input['action'] == "resetpassword"

... pour voir qu'il s'agit d'un code exécute pour le "mot de passe oublié", et non pour l'inscription.
Et puis jusqu'à preuve du contraire, "password" veut dire "mot de passe", et non "sel"..

Je ne vois pas pourquoi tu cherches son utilisation dans MyBB si tu veux l'utiliser sur un site web à part...
Tu n'as qu'à récupérer le salt de l'utilisateur, crypter avec la fonction que je t'ai donné plus haut, et comparer avec le "password" de la base de données...

JWH Smith - Développeur web
Répondre
20-11-2011, 23:05,
#10
RE: Ûtilisation BDD
Bref. Merci beaucoup Smile

Bonne soirée
Répondre
21-11-2011, 12:31,
#11
RE: Ûtilisation BDD
Bon je double post pour revenir vers vous, j'ai utilisé exactement la fonction que vous m'avez proposé mais je ne retombe pas sur les valeurs de la base de données.

Code PHP :
function debug($str)
{
    echo 
$str.'<br />';
}
function 
salt_password($password$salt)
{
    return 
md5(md5($salt).$password);
}
if(!isset(
$_POST['mot_de_passe']) OR !isset($_POST['compte']))
{
    include(
"form.php");
} else {
    
    
$username htmlspecialchars($_POST['compte']);
    
$password htmlspecialchars($_POST['mot_de_passe']);
    
    try 
    {    
        
$reponse $bdd_mybb->prepare('SELECT password,salt FROM mybb_users WHERE username = ?');
        
$reponse->execute(array($username));
        
        
$donnees $reponse->fetch();
        
        
$password_bdd $donnees['password'];
        
$password_changed salt_password($password$donnees['salt']);
        
        
$reponse->closeCursor();
    }
    catch(
Exception $e)
    {
        die(
'Erreur : '.$e->getMessage());
    }
    
    if(
$password_changed == NULL OR $password_bdd == NULL OR ($password_changed != $password_bdd))
    {
        
debug($password_changed);
        echo 
'Un champ est manquant ou la combinaison est incorrecte !';
        include(
"form.php");
    } else {
        
//verif admin
        //redirection admin.php avec $_SESSION trop coolos
        
echo 'BRAVO PAGE ADMIN VOILA VOILA';
    }


je vous ai mis le code ou ca coince, comme vous l'auriez compris, normalement, mon "script" est sensé à $password_changed qui est egal à $password_bdd SI le pass entré est correct ! Or Je tombe toujours sur une chaine de caractère différente.

J'ai essayé de trouver l'endroit dans mybb ou ils enregistre leur mot de passe, que je vois la fonction utilisé ou la méthode, mais en vain, je n'ai pas trouvé :/

Peut-etre pourriez-vous, a nouveau, m'éclairer ?
Répondre
22-11-2011, 22:18,
#12
RE: Ûtilisation BDD
Pour information, j'ai trouvé la fonction correcte :

Code PHP :
/*
* $password = pass writen by the user
* $salt = random str contained in the DB
*/
function salt_password($password$salt)
{
      return 
md5(md5($salt).md5($password));

Répondre
22-11-2011, 22:54,
#13
RE: Ûtilisation BDD
La fonction de salt que j'ai donné est celle de MyBB 1.4.8. Je n'ai pas vérifié les changements dans les versions plus récentes.

JWH Smith - Développeur web
Répondre




Utilisateur(s) parcourant ce sujet : 5 visiteur(s)

Contact | MyBB.support | Retourner en haut | Retourner au contenu | Version bas-débit (Archivé) | Syndication RSS
 Utilitaire de traduction fourni par Regentronique