Cookies et mdp

Expertisite
Invité n'ayant pas de compte PHPfrance

17 sept. 2006, 22:32

Salut à tous,

Je sais que la question des cookies a beaucoup été posée, mais j'aimerais exposer un problème un peu différent.
Les membres de mon site s'identifient via un formulaire (avec mot de passe crypté (md5)) et naviguent par l'intermédiaire de sessions.
Mais étant donné que dès qu'on ferme le navigateur, le membre est déconnecté, j'ai décidé de créer un cookie qui retient le pseudo et le mot de passe de l'utilisateur sur la page d'accueil pour qu'il n'ait plus qu'à appuyer sur le bouton pour entrer dans son espace membre.

PROBLEME : le mot de passe est enregistré clairement dans le cookie chez l'utilisateur... est-ce un problème ?? quelqu'un de malhonnête ( :twisted: ) peut-il utiliser ce cookie ?

Merci d'avance pour vos réponses !

Expertisite

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 sept. 2006, 22:44

Garder un mot de passe en clair n'est jamais bien.

Ce que tu peux faire est de l'enregistrer haché (md5) dans un cookie, lors du chargement d'un page tu vérifie l'existence de ce cookie s'il existe tu récupères les données. Tu exécute la requête de connexion sans hacher à nouveau le passe QUE s'il vient d'un cookie.
if(isset($_COOKIE['passe']))
   $passe = $_COOKIE['passe'];
else
   $passe = md5($_POST['passe']);

// ici la requete de connexion
$sql ="... WHERE champ_passe = '".$passe."' ..." ;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

17 sept. 2006, 22:46

Absolument, solution pas du tout recommandée, un pirate qui pourrait intercepter les communications récupèrerait le mot de passe de cette manière. Mais sans aller jusque là, un utilisateur indélicat de la machine de ton abonné pourrait également simplement chercher le cookie et récupérer le mot de passe pour pouvoir se connecter ultérieurement de sa propre machine.

En règle générale, on ne conserve jamais les mots de passe dans un cookie, pas davantage dans une variable de session.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Expertisite
Invité n'ayant pas de compte PHPfrance

17 sept. 2006, 22:49

Merci pour ta réponse, mais je me suis surement mal exprimé... je ne me sers pas du mot de passe en clair contenu dans le cookie pour exécuter mes requêtes, mais juste pour afficher le mot de passer dans le champ de formulaire à l'identification pour éviter au membre de le retaper à chaque fois qu'il vient sur le site.
En gros, j'aimerais pouvoir garder en mémoire le mot de passe du membre, pour l'aider à se connecter lorsqu'il revient sur le site.

Merci quand même :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 sept. 2006, 22:58

C'est du pareil au même tu garde le mot de passe en clair.

Ce que tu demandes est normalement intégré dans tout bon navigateur... les champs de type "mots de passe" sont préremplis si l'on a validé au moins une fois le formulaire (la petite invite "garder le mot de passe "oui", "non", "jamais" dans ce style)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Expertisite
Invité n'ayant pas de compte PHPfrance

17 sept. 2006, 23:10

Ok d'accord. Mais sur certains sites on peut cocher "se souvenir de mes informations" par exemple, comment ça marche ?

Expertisite
Invité n'ayant pas de compte PHPfrance

17 sept. 2006, 23:20

ou bien encore "se connecter automatiquement à chaque visite"... :-k

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 sept. 2006, 00:05

comme je l'ai dis précédemment ou enregistrer dans un cookie l'id de session.
Cet id est enregistré avec les données du membre lors de la connexion persistante. A chaque visite tu vérifie (toujours) l'existence du cookie s'il existe tu peux ouvrir la session avec les données qui correspondent à l'id de session du cookie.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Expertisite
Invité n'ayant pas de compte PHPfrance

18 sept. 2006, 00:12

Parfait, merci :wink: