Bonjour,

Je suis en train de mettre en place ma page de connexion et je me posait une question.

Je vais vérifier que le mot de passe entrée par l'utilisateur (haché avec une fonction), correspond au mot de passe dans la base de données (haché lui aussi).

Si ça coresspond,

Je stock l'identifiant et le mot de passe (haché) en Cookie puis en Session.

Ce que je voudrais savoir en fait

C'est si les cookies / sessions sont sécurisés, dans le sens où, est-ce qu'une personne peut créer lui même des cookies ou session et ainsi feinter la vérification du site ?

Sinon

Quel serait le meilleur moyen de faire ça ?

Merci d'avance,

3 réponses


segfault
Réponse acceptée

Hello,

Alors déjà en effet stocker le mot de passe, même encrypté, c'est pas fou on ne va pas se mentir.
Ce que tu peux faire en revanche c'est créer un token avec une validité temporaire, le stocker dans les cookies ou la session une fois que l'utilisateur est connecté, et ensuite te servir de ce token pour authentifié ton utilisateur à chaque requête.

Certes dans les deux cas tu as une chaine de caractère encrypté, sauf qu'en utilisant un principe de token avec une validité temporaire tu limite grandement les chances de vol de cookies/session.

Pour la manière dont tu peux le mettre en place, je le vois un peu comme ça:

  • L'utilisateur s'identifie avec succès
  • Tu génère un token unique, le mieux c'est d'encrypter des infos de son compte avec le timestamp courant, comme ça tu est quasi sûr que deux tokens ne seront jamais égaux.
  • Tu renvoye ce token à l'utilisateur pour qu'il y stock dans ces cookies et du côté serveur tu y stock aussi dans la session courante, au cas où les cookies soient vidés pendant la durée de validité du token.
  • Dés que l'utilisateur essaye d'accédé à une resource protégé, tu vérifie que le token correspondent bien a un utilisateur. Si ce n'est pas le cas, tu vide la session et tu le redirige sur la page de connection

Il y a très certainement une meilleur manière, ou plus simple, manière de le faire. Mais avec ça au moins tu limite les soucis comparé au fait de stocker toujours le même hash en cookies

bonjour.
pas de mdp dans les sessions ni les cookie.
les sessions sont stockées sur le serveur. donc non modifiable.
en revanche pour pour les cookies, je ne suis pas sur vu que tu les stocks sur le

Martin40
Auteur

Effectivement je trouve que c'est une bonne solution le token.

Je vais du coup stocker un token dans un cookie et dans la base de donnée, qui prendra la forme d'un long digit + l'IP de la machine, le tout haché.

Comme ça, même si le cookie est "volé", l'IP de la machine fera qu'il ne pourra pas réutiliser celui-ci.