Explication sur les cookies de session

Résolu/Fermé
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020 - 23 déc. 2019 à 08:23
jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 23 déc. 2019 à 08:52
Bonjour à tous,

Je viens vous exposer mes questions concernant les sessions cookie.

J'ai sur un de mes sites (un jeu en ligne) mis une checkbox lors de la connexion du joueur, lorsqu'on coche la checkbox un cookie est créé chez l'utilisateur.

Ce cookie contient le pseudo et mot de passe qui sont hachés en sha1.

Une fois le joueur connecté, je vois bien le hash en faisant un (echo $_COOKIE['auth'];) seulement si on a coché la checkbox.

------------------- -------------- ----------------

D'ordinaire je me sers de la $_SESSION['id'] du joueur que j'extrait de la base de données mais au bout de quelques minutes d'activité ou même s'il visite d'autres sites entre temps, il est déconnecté du jeu.

Comment garder la session ouverte le temps que le cookie est valide ? (il est valide un an).

setcookie('auth', sha1($pseudo . $password), time() + 365*24*3600, null, null, false, true);


Actuellement le haut de mes pages j'ai ceci ...

session_start();

include('config.php');

if (!isset($_SESSION['id'])) {
header('Location: index.php');
}

Mes questions sont,

Comment faire en sorte que le joueur soit connecté grâce à son cookie ?
Faut il continuer à utiliser la session id de la base de données ?
Faut il décrypter le contenu du cookie quelque part ?
Dois-je modifier quelque chose dans le haut de mon fichier une fois le joueur connecté ?

Merci pour votre aide :)

1 réponse

jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
23 déc. 2019 à 08:52
Bonjour,

1 - pour "crypter" les mots de passe, il ne faut plus utiliser le SHA1 (et encore moins le MD5).
A la place, il faut se servir des fonctions passwrord_hash de php

2 - On ne stocke jamais le mot de passe dans un cookie (les cookiens pouvant se faire "voler" )

3 - A la place de stocker le password dans un cookie, je te propose de stocker une chaine résultant d'une combinaison de choseses telles que, par exemple,
L'ID du user, son IP et/ou un token aléatoire propore à l'utilisateur, généré (et stocké en bdd) le tout mixé avec une clé de salage de ton choix.

4 - Il faut ensuite, à chaque ouverture de tes pages, si le cookie existe,
vérifier si les données stockées dans ton cookie sont conforment à l'authentification de l'utilisateur (en gros, avoir une méthode de login
qui se base sur ces infos (token + id du user) via une requête sql... et qui, si c'est bon, se comporte comme ton authentification "normale" login/password et "update" la variable de session.)


1