IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Que choisir entre session et cookie [Fait]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    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

  2. #2
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    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.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    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 ?

  4. #4
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    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...

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    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)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    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.

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    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)

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    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 ?

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    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 ?

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    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

Discussions similaires

  1. [Cookies] Empecher interférences entre sessions php
    Par reventlov dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2008, 11h33
  2. Que choisir entre Sous domaine et repertoire
    Par badrel dans le forum Référencement
    Réponses: 2
    Dernier message: 31/03/2008, 23h05
  3. Réponses: 3
    Dernier message: 13/03/2008, 15h41
  4. Réponses: 4
    Dernier message: 20/10/2007, 22h36
  5. Que choisir entre l'objet COM et le Spreadsheet
    Par Ivan Isaak dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/07/2006, 08h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo