Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2008, 11h02   #1
Membre habitué
 
Inscription : juin 2004
Messages : 553
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2004
Messages : 553
Points : 144
Points : 144
Envoyer un message via MSN à black is beautiful
Par défaut [Cookies] Que choisir entre session et cookie

Bonjour à tous,

En fait je suis en train de réadapter un site internet commercial. Pour le moment l'authentification de l'utilisateur se fait par les cookies, et pour ce qui est des informations utiles au site elle se fait par l'intermédiaire des sessions PHP.

Je voudrais déjà savoir déjà quelle la solution la plus sécurisée entre les cookies et les sessions pour s'identifier auprès du site ?

Ensuite je créé un panier dès le premier accès au site, même si il n'est pas connecté, donc si j'ai bien compris c'est là que les sessions entre en jeu. Pour que je puisse reconnaitre une personne d'une autre sans qu'il ai besoin de se connecter, c'est bien ça ?

Merci d'avance
black is beautiful est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 11h19   #2
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Les sessions sont plus sûr que les cookies

les cookies peuvent être volés, ou modifiés...

Le tout quand on utilise un cookie, c'est de vérifier si il n'y a aucune faille XSS sur le site, si ton site contient des failles XSS, n'importe quel hacker, parviendra à te voler facilement les comptes de tes clients.

Pour reconnaitre un utilisateur lors de la première connexion sans devoir se logger, ce sont les cookies qu'il faut utiliser non les sessions.
__________________
Solutions pour concessions et garages automobiles =>
http://www.fastback.be
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 11h44   #3
Membre habitué
 
Inscription : juin 2004
Messages : 553
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2004
Messages : 553
Points : 144
Points : 144
Envoyer un message via MSN à black is beautiful
Donc ce que je peux faire, c'est que tant que la personne ne se connecte pas, un ID temporaire lui est donné qui sera enregistré dans un cookie, ainsi il peut utiliser et remplir son panier.
Ensuite si il veut se connecter, à ce moment je créé par dessus l'ancien cookie un nouveau cookie avec seulement l'identifiant, le mot de passe sera stocké sur le serveur.

J'utiliserai constamment les sessions, avec une variable qui définira si l'utilisateur est connecté ou non.

Au niveau sécurité ça peut aller non ?
black is beautiful est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 13h41   #4
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Oui c'est une sécurité simple mais qui fonctionne très bien.

Je n'ai pas d'url à donner comme ça, mais il existe des tutoriels sur la sécurité des sessions qui pourront peut être t'inspirer

Mais pour le panier virtuel temporaire, tu peux utiliser les sessions plutot que les cookies...
__________________
Solutions pour concessions et garages automobiles =>
http://www.fastback.be
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 14h12   #5
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Je dirais... les 2 !

* Cookie = Fichier sur le poste client (donc volable, modifiable, etc...) contenant des données que tu stockes pour les retrouver.
* Session = Fichier sur le serveur (donc pas volable, pas modifiable, etc...) contenant des données que tu stockes pour les retrouver.

Bref, c'est la meme chose... a ceci pret que si retrouver le fichier de cookie est simple : Il suffit d'utiliser celui présent sur le poste client.

Retrouver le fichier de session, quand tu as plusieurs clients sur le site en meme temps, necessite de pouvoir l'identifier de maniere unique... c'est le but de l'ID de session.

Donc il faut que le client envoie au serveur l'ID de session pour que le serveur retrouve le bon fichier "Session" a utiliser.

Cette ID de session, comment le client va t'il la conserver ?

2 solutions :
* Utiliser un cookie ^^ Ben oui, c'est bete mais c'est ce qui se fait en général. L'ID de session est donc volable et modifiable, mais c'est deja un peu plus difficile
* Passer l'ID de session dans l'URL de la page... ca fait des URL super longues, encore plus facilement piratables/modifiables/exploitables qu'en passant par des cookie... bref, a oublier si on peux faire autrement.

Donc au final, il faut utiliser des sessions... et un cookie contiendra l'ID de session (le cookie est géré de maniere automatique par session_start() en principe)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 14h31   #6
Membre habitué
 
Inscription : juin 2004
Messages : 553
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2004
Messages : 553
Points : 144
Points : 144
Envoyer un message via MSN à black is beautiful
Ok je pense que je vais faire ça. J'utiliserai le cookie pour stocket l'ID de la session.

Par contre j'aurais une dernière question, quand sur un site il propose de se connecter automatiquement à la prochaine visite, en fait il enregistre l'identifiant et le mot de passe dans un cookie non ?

C'est pas super sécurisé si ça se passe comme ça.
black is beautiful est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 14h37   #7
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
non, il fait quand il y a ce genre de case, il change juste la date d'expiration du cookie qui stocke l'ID de session.

Un cookie peut avoir comme date d'expiration :
* la "session" (ce qui prete a confusion, on entend par là la periode entre la définition du cookie et la fermeture du navigateur web)
* une date spécifiée (15mn, 1jour, 6 mois, 99ans, etc...)

Donc quand tu coches "se souvenir de moi", ca fait en sorte que le cookie contenant l'ID de session reste présent sur ta machine apres être parti du site. C'est "moins" sécurisé en effet... mais c'est tres chiant d'avoir a retaper son mot de passe tout les jours, c'est a toi de le voir avec tes utilisateurs ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2008, 12h24   #8
Membre habitué
 
Inscription : juin 2004
Messages : 553
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2004
Messages : 553
Points : 144
Points : 144
Envoyer un message via MSN à black is beautiful
Ok, donc quand on utilise les sessions on peut la prolonger pour qu'elle ne se termine pas après l'arrêt du navigateur ?
black is beautiful est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2008, 16h08   #9
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
oui

http://www.php.net/manual/fr/functio...kie-params.php
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2008, 16h51   #10
Membre habitué
 
Inscription : juin 2004
Messages : 553
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2004
Messages : 553
Points : 144
Points : 144
Envoyer un message via MSN à black is beautiful
Ok merci pour lien.

Mais alors il y a quelque chose que je ne comprends pas à ce moment. Les données de la session sont stockées sur le serveur, mais si par exemple nous prolongeons la durée à 1 jour, qu'une personne se connecte, créé la session, puis se deconnecte. Le lendemain le serveur saura quel donnée lui remettre pour sa prochaine connection ?

Ou est-ce que ces données sont stockées sur l'ordinateur du client ?
black is beautiful est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2008, 18h27   #11
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Sur le client la seule chose qui est stockée c'est un COOKIE contenant un ID de session qui permet au serveur de retrouver les infos sur le disque du serveur
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web