[ PHP ] Page membre: le meilleur systeme d'authentification ?

Page membre: le meilleur systeme d'authentification ? [ PHP ] - PHP - Programmation

Marsh Posté le 26-05-2002 à 01:10:30    

pour un site ou un forum, c'est quoi le mieux ?
 
au debut, j'ai commencé a faire un systeme avec une table user:
  id, login , password, sessionid
le password est stocké apres un md5().
 
lors du login, je verifie en base si il existe un id pour login = $login et password = md5($password) et si c'est le cas, je genere un sessionid, je mets a jour la base (colonne sessionid) pour le id recuperé précedemment et je sauve un cookie contenant le login + le sessionid
 
ensuite, sur chaque page, je verifie que le login/sessionid passés existent en base, si c'est le cas, c'est ok, sinon supression du cookie et redirection vers la page de login.
 
le pb avec ca, c'est que l'utilisateur est obligé de se reconnecter a chaque fois qu'il change de machine (puisque le sessionid est maj a chaque login et que le contenu du cookie sera different entre 2 machines)
 
 
 
donc j'ai cherché un peu sur le web et je suis tombé sur un article de PHPBuilder.com qui valide le login avec une "clé":
la table user contient maintenant:
  id, login , password
et lors du login, apres verif du login/pwd en base, le cookie genere contient le login + une clé = md5($cletopsecret . $login)
 
ensuite, sur chaque page, je verifie que cledanslecookie = md5($cletopsecret . logindanslecookie). si c'est ok, je verifie que le $logindanslecookie existe en base. si tout est ok, j'affiche la page de membre sinon, suppression du cookie et retour sur la page de login.
 
ca permet donc que l'utilisateur n'ait pas a se reconnecter sur chacun de ces pcs.
 
Y-a-t'il de meilleurs systemes? des problemes de securite dans celui que j'utilise (outre la divulgation de la $cletopsecret)?
 
 :jap:

 

[jfdsdjhfuetppo]--Message édité par JWhy le 26-05-2002 à 01:20:30--[/jfdsdjhfuetppo]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-05-2002 à 01:10:30   

Reply

Marsh Posté le 26-05-2002 à 01:44:06    

je fais comme ça :
choix lors de la connexion d'un temps d'authentification (15min, 30min, 1h) ou bien autentification automatique par cookie.
 
je crée une session pour tout le monde.
si le login+pwd donné lors de l'authentification est valide, j'ajoute l'entrée dans la table des utilisateurs onlines (sess_id, user_id, durée) valide pour la durée encodée ou pour 1h si c'est par cookie.
 
Au chargement de chaque page, je regarde si la session est enregistrée dans la table des utilisateurs enregistrés.
 
soit c'est le cas, --> ok
soit ce n'est pas le cas, alors je regarde si un cookie existe.
S'il existe et que le login+pwd sont ok, je rajoute la sess_id, user_id, durée (c totalement transparent pour l'utilisateur).


---------------
...oups kernel error...
Reply

Marsh Posté le 26-05-2002 à 15:25:42    

JWhy a écrit a écrit :

ensuite, sur chaque page, je verifie que le login/sessionid passés existent en base, si c'est le cas, c'est ok, sinon  




 
et pourquoi t'utilise le sessionid ?
 
tu pourrais pas simplement sur chaque page vérifier que login = $login et password = md5($password) ?

Reply

Marsh Posté le 26-05-2002 à 16:16:16    

bah meme avec uniquement des cookies, si tu change de machine, tu dois te retapper l'authentification, hein

Reply

Marsh Posté le 26-05-2002 à 16:18:00    

ben faut créer les cookies une fois sur chaque machine, oui. mais après les cookies étant identiques, tu peux passer d'une machine à l'autre sans à avoir à te relogger

Reply

Marsh Posté le 26-05-2002 à 16:20:38    

siewn a écrit a écrit :

ben faut créer les cookies une fois sur chaque machine, oui. mais après les cookies étant identiques, tu peux passer d'une machine à l'autre sans à avoir à te relogger  




 
bin oui :D
 
mais sans les sesssions
 
pour ma part les sessions c un peu inutile, les cookies etant deja assez sécurisé :D

Reply

Marsh Posté le 26-05-2002 à 16:25:04    

oui, bien sûr tu vas pas retrouver ta session ;)
 
mais comme tu le dis, les sessions mieux vaut s'en passer (c'est pas très utile de tte façon)

Reply

Marsh Posté le 26-05-2002 à 17:50:58    

oui, c'est pour ca que j'etais passé a la deuxieme solution ;)
je voulais juste savoir si c'etait comme ca que ca se faisait generalement ou si il y avait de meilleurs systemes !


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-05-2002 à 17:54:03    

hum, je vois pas ce que t'apporte le 2e système  :??:

Reply

Marsh Posté le 26-05-2002 à 18:35:46    

la possibilité de ne pas avoir a se relogger lors d'un changement de machines vu que le cookie contient les memes données


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-05-2002 à 18:35:46   

Reply

Marsh Posté le 26-05-2002 à 18:38:28    

euh c'est pas le md5(password) que je stock dans le cookie, hein!
c'est le md5(cle1.login.cle2) avec cle1 et cle2 des cles privés stockés en dehors du repertoire web sur le serveur...


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-05-2002 à 18:39:14    

JWhy a écrit a écrit :

euh c'est pas le md5(password) que je stock dans le cookie, hein!
c'est le md5(cle1.login.cle2) avec cle1 et cle2 des cles privés stockés en dehors du repertoire web sur le serveur...  



héhé bonne protection ! :)

Reply

Marsh Posté le 26-05-2002 à 18:53:39    

désolé, j'ai un peu de mal ;) mais je vois pas l'intérêt de stocker md5(cle1.login.cle2) au lieu du login simplement ?

Reply

Marsh Posté le 26-05-2002 à 19:03:21    

lors du login, je verifie qu'il existe un user_id pour le $login et $password passés
 
si c'est ok, je stock (cookie)
  $login : login
  $hash  : md5(cle1.login.cle2)
 
 
lors de l'affichage d'une page, je verifie que  
  $hash = md5(cle1.$login.cle2)
et que
  $login est en base
 
donc l'interet:
  cookie unique lors d'un changement de machine
  pas de mdp dans le cookie
 
inconvenient :
 ??? (c'est pour ca que je postais ;) )


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-05-2002 à 19:05:07    

bah j'en vois aucun, tu peux meme mettre un password ds le cookie, en md5 ya aucune chance de le décrpyter

Reply

Marsh Posté le 26-05-2002 à 19:07:21    

pas dit: http://www.derekhinch.com/genlog.phtml  
vu que c'est les utilisateurs qui choisissent leur mdp (potentiellement "faible" ), md5($password) c'est un peu leg'... a la limit md5(cle1.$password.cle2)  ;)
 
pour info, mes cle1 et cle2 viennent de la:
http://www.winguides.com/security/password.php (64 char et tout coché)

 

[jfdsdjhfuetppo]--Message édité par JWhy le 26-05-2002 à 19:08:29--[/jfdsdjhfuetppo]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-05-2002 à 19:17:38    

ok, je partais du principe que le md5 était undécryptible alors que c'est vrai qu'il y a des limites à cela... à ce moment là, tu fais un md5($login.$pass) comme ça t'as pas à utiliser de clé.
 
par contre, ça n'a pas un rapport direct mais n'oublie pas de créer un champ nberreurs et de bloquer toute tentative de login quand il y a eu 10 tentatives successives avec un mot de passe éronné.

Reply

Marsh Posté le 26-05-2002 à 19:20:40    

c'est pas encore fait, mais c'etait deja dans la liste  ;)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 11-02-2003 à 16:53:35    

JWhy a écrit :

pas dit: http://www.derekhinch.com/genlog.phtml  
vu que c'est les utilisateurs qui choisissent leur mdp (potentiellement "faible" ), md5($password) c'est un peu leg'... a la limit md5(cle1.$password.cle2)  ;)
 
pour info, mes cle1 et cle2 viennent de la:
http://www.winguides.com/security/password.php (64 char et tout coché)  
 
[jfdsdjhfuetppo]--Message édité par JWhy le 26-05-2002 à 19:08:29--[/jfdsdjhfuetppo]


 
 
md5 c intégré à PHP d'office ?
 
je suis newbie en php, je viens d'asp :)........désolé  :whistle:

Reply

Marsh Posté le 11-02-2003 à 18:15:20    

Reply

Marsh Posté le 11-02-2003 à 23:13:16    


 
merci :) le manuel ok ! je bookmark

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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