comparaison de mot de passe selon .htpasswd

comparaison de mot de passe selon .htpasswd - PHP - Programmation

Marsh Posté le 11-04-2006 à 10:56:37    

Bonjour à tous !!!
 
Voilà... j'aimerai mettre en place un système de session qui utilise les mots de passe cryptés dans un fichier .htpasswd. c'est une obligation de passer par les login/pwd du .htpasswd, car d'autres processus utilisent également ce fichier pour stocker et effacer des utilisateurs.
 
Donc à priori, j'aimerai faire "semblant" d'avoir un .htaccess à la racine. Mais en réalité, je n'aurai que le htpasswd, qui se remplit et se désempli d'utilisateurs au fil du temps. Et c'est php qui s'occupe de lire le contenu du fichier pour contrôler si l'utilisateur y est présent, et le cas échéant le redirige vers une partie privée gérée par session.
 
Le problème, c'est que je n'arrive pas à faire une comparaison correcte via php. J'ai pu lire qu'Apache utilisait des process différents selon que la machine est hébergée sur un os windows ou linux.
 
Indépendamment de cette différence d'os (car dans mon cas, le serveur sera un serveur linux, apparemment), existerait-il un moyen de pouvoir crypter correctement le mot de passe entré par l'utilisateur pour pouvoir ensuite le comparer au mot de passe enregistré dans le fichier .htpasswd ??
 
Et ceci sans pour autant devoir nécessiter tous les privilèges serveur... :)
 
 
D'avance merci pour vos suggestions.
 
a++

Reply

Marsh Posté le 11-04-2006 à 10:56:37   

Reply

Marsh Posté le 11-04-2006 à 11:08:59    

Salut ;)
 
Je vais peut etre repondre a coté mais un :
 

Code :
  1. if ( md5($password) == $passwordcrypte ) {


 
ne suffit il pas? $password etant le password que rentre l'utilisateur (non crypté à l'origine) qu'on crypte en md5 et qu'on compare au password du htpasswd qui lui est crypté en md5 .
 
:hello:

Reply

Marsh Posté le 11-04-2006 à 11:28:35    

Hello !!
 
Merci pour cette suggestion, mais après mes lectures, je me doutais que ça n'allait pas fonctionner...  
 
En fait, voilà le résultat du test :
 
la première ligne correspond au cryptage en md5, la seconde ligne correspond aux infos qui sont dans le fichier .htpasswd, le mot de passe à été généré sur http://cobalt.golden.net/generator/index.cgi
 

Code :
  1. c6031e0108a59a4879f8a0135d22273d
  2. Array ( [0] => Array ( [user] => titouille [pass] => 48SV/chV65LzM ) )


 
 
Et avec crypt, c'est encore pire, il me balance à chaque fois un mot de passe différent, il doit être basé sur un timestamp.
 
Je ne sais pas exactement comment il est crypté, mais ce n'est en tout cas pas un md5 standard... il doit y avoir des finesses...
 
Mais dans le même ordre d'idée, serait-il possible d'exécuter un script perl ou un cgi via php pour récupérer le mot de passe généré par le script et pouvoir faire la comparaison ?? Bon, ça devient assez tordu, là...

Reply

Marsh Posté le 11-04-2006 à 12:09:08    

Raah, c'est l'enfer...
 
Je me suis dit... peut-être que je peux faire le contraire... faire l'authentification via apache, et par la suite en php, récupérer les infos d'authentification.
Seulement apache me retourne le password en clair, et si je tente de faire une comparaison en le cryptant, à nouveau, je me retrouve avec des mots de passe qui ne correspondent pas...

Reply

Marsh Posté le 11-04-2006 à 13:07:53    

Re-salut :)
 
Pourquoi tu t'embete avec le générateur que tu as indiqué si il ne délivre pas de bon mot de passe cryptés?
 
Tu n'as qua creer un formulaire de saisie login / mdp
Tu crée un fichier comme tu veut htpassword ou maman.papa et tu y écris :
$_POST['login'].' : '.md5($_POST['password']
 
Apres tu pourra faire toutes les comparaisons que tu veut avec la methode que j'ai mis au dessus.
 
Bon, ya peut etre quelque chose qui ma échappé car ce que je te propose tu y as sans doute pensé.
 
Bonne chance en tous cas.

Reply

Marsh Posté le 13-04-2006 à 10:59:39    

Hello !!
 
Ben en fait, le générateur me délivre un login et mot de passe pour un utilisateur qui a payé pour les avoir. Donc je ne peux pas passer outre ces infos et créer les miennes... je dois à tout prix être en mesure de pouvoir comparer les infos insérées par l'utilisateur et les infos renvoyée par le générateur. Mais il semblerai que ça fonctionne. Je n'utilisais pas la méthode "crypt" de la bonne manière. Je lui passait seulement un mot de passe en clair, alors qu'il faut passer le mot de passe en clair ainsi que le mot de passe crypté sur le serveur, et comparer le tout au mot de passe crypté
 

Code :
  1. if( crypt( $_POST['pwd'], $cryptedPwdInDB ) == $cryptedPwdInDB )
  2. ...


 
Mais au final, j'ai réussi à me débrouiller sans l'utilisation de htpasswd. J'ai créé ma propre classe de gestion pour la récupération des données générateur et je peux directement les enregistrer ou je veux (en DB plutôt que dans un htpasswd).
 
Merci pour les tentatives en tout cas ;)

Reply

Sujets relatifs:

Leave a Replay

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