[php 4 /mysql 4.1] hashage mdp ?

hashage mdp ? [php 4 /mysql 4.1] - PHP - Programmation

Marsh Posté le 18-08-2005 à 15:16:49    

Bonjour !
J'ai installé récemment mysql 4.1 sur un serveur.  
J'ai également un serveur apache1.3.26/php à disposition.
Les deux serveurs sont sous Solaris 9 (sparc).
 
Le but de l'installation de mysql est en fait l'installation de grr, un gestionnaire de ressource web (cf http://www.lpi.ac-poitiers.fr/grr_lpi/).
 
J'ai eu des problèmes du fait que mysql 4.1 utilise un nouveau hashage (41 octets pour la fonction password() au lieu de 16 sur les versions précédentes).
 
Du coup lors que je configurais grr, il ne pouvait pas se connecter à la base, les mots de passe correpsondaient pas.
J'ai modifié le mdp de la table user avec un old_password('mdp') et désormais l'appli php se connecte bien à la base.  
 
Seulement l'appli accède à une table utilisateurs avec des lignes contenant un champ password... Et là, il est impossible de se loguer au sein de l'appli selon un utilisateur défini dans la table...
 
Me suis plongé dans le script, voici comment le test est effectué:

Code :
  1. $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language
  2.     from utilisateurs
  3.     where login = '" . $_login . "' and password = md5('" . $_password . "') and etat != 'inactif'";
  4.     $res_user = sql_query($sql);
  5.     $num_row = sql_count($res_user);


 
J'ai testé deux types d'utilisateurs dans ma table. J'en ai un avec un mdp ancien format (16 caractères), un autre bcp plus long selon le nouveau protocol.
Dans les deux cas, le test avec md5() ne passe pas... impossible de se logger dans l'appli :??:
 
Que faire ? Je passe sous mysql 4.0 ?
Merci d'avance !

Reply

Marsh Posté le 18-08-2005 à 15:16:49   

Reply

Marsh Posté le 18-08-2005 à 15:55:22    

c'est peut etre aussi dû à ton :
 

Code :
  1. "select upper(login) login"


 
Tu ne devrais peut être que laisser upper(login) ..

Reply

Marsh Posté le 18-08-2005 à 16:42:43    

C'est à dire que là il s'agit du code de l'application, qui marche bien ailleurs.
Je préfèrerai éviter de la bidouiller.  :)  
Je vais mettre à jour ma version de php4, je viens de voir que la version php installée (bizarrement d'ailleurs, mélangée dans apache :/) est inférieure à 4.1...
On verra ce que ca donne après.
 
Merci ;)


Message édité par Pwill le 18-08-2005 à 16:43:40
Reply

Marsh Posté le 19-08-2005 à 00:23:05    

la fonction MD5 n'a aucun rapport avec la fonction Password de MySQL.
derniere version de php4 : 4.4.0

Reply

Marsh Posté le 19-08-2005 à 07:59:46    

ne pas confondre password(mdp) de mysql et md5(mdp) de php.
Ce ne sont ni la même méthode de transformation donc niveau de protection légérement différente (du à une difficulté différente pour retrouver un mot de passe fonctionnant avec la version codé) ni le même programme qui fait le traitement donc portabilité différente. (un motde passe transformé par password de mysql ne sera surement compris que par mysql et pas par d'autres bases de données)
 
En tout cas, quel que soit la fonction utilisé pour remplir le champ de mot de passe, il faut utiliser la même pour le comparer aux saisies.


Message édité par omega2 le 19-08-2005 à 08:12:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed