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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Plusieurs sessions pour un utilisateur


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut Plusieurs sessions pour un utilisateur
    Bonjour,
    Presque tout est dans le titre :-)
    Sur une appli web, j'ai un formulaire d'identification. Lorsque l'utilisateur se connecte cela cré une session.
    Dans cette session je stocke notamment le login et l'IP de l'utilisateur.
    Or il m'arrive régulièrement d'avoir plusieurs session pour un même utilisateur (même login, même IP mais 2 fichiers de session différents).

    Comme cela est-il possible?

    Merci.

  2. #2
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Je ne suis qu'un demi débutant, mais je peux peut-être aporter mon point de vue, comme ça vous pourrez éventuellement vérifier si j'ai bien assimilé les sessions.

    Tu dis que tu as plusieur numéros de session pour un même utilisateur. Cela me parait normal car le numéro de session change à chaque fois qu'une session se détruit. Par exemple, si l'utilisateur ferme sont navigateur, puis le reouvre et se relog, alors cet utilisateur obtiendra un numéro de session diférent.

    Je viens juste d'en faire l'expérience sur mon server Wamp.

  3. #3
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Normalement c'est pas le numéro de session qui change quand un meme utilisateur se déconnecte et se reconnecte, mais c'est le fichier de session qui est détruit (donc son numéro aussi) et un autre fichier de session est créé (avec un nouveau numéro de session).
    Il ne devrait donc pas être possible d'avoir 2 fichiers pour un même utilisateur.

    A moins qu'il y ai un problème (mais lequel?) lors de la destruction de la session qui fait que la session se termine mais le fichier de session n'est pas détruit.

  4. #4
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Escuse mais je ne comprend toujours pas.
    Les fichiers dont tu parles sont-ils bien situés dans le répertoires de fichiers temporaire ("tmp" par défaut) ?
    Parce que moi, j'ai fait une expérience :
    Quand l'utilisateur se logue, un fichier session est créé dans le répertoire /tmp. Puis quand il se déconecte (par exemple en fermant le navigateur), le fichier session est toujours présent dans le dossier /tmp. En fait, ce dossier stock l'historique des sessions.
    Peux-tu me dire ce qui cloche ?
    Merci pour ton aide

  5. #5
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Eh quelqu'un peut-il nous aider? J'ai besoin de comprendre s'il vous plai.
    Merci pour votre aide

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Le fichier de session est créé à chaque fois que session_start est appellé.
    Je conseille la lecture de ce tuto :
    http://a-pellegrini.developpez.com/t...hp/session-db/

  7. #7
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Merci pour ce lien, mais je le connais par coeur ce tuto car ça fait 2 semaines que je suis dessus!
    Moi ce que j'ai du mal a saisir c'est le comportement précis des sessions. Par rapport au comportement des sessions, j'ai casiment compris la totalité des choses, mais après quand on commence à rentrer dans des cas plotôt particulier, là je galère.
    Par exemple, dans la question de Nicoaix, je comprend pas ce qu'il a comme problème et j'aimerai savoir car cela m'enrichirait d'avantage par rapport à ce que je connais déjà sur les session.
    D'autre part, puisque tu nous donnes ce lien sur le tuto de sécurisation des sessions avec une base de données, j'aurai une question à son propos.

    Ce système enregistre l'adresse IP ainsi que le type de browser pour chaque utilisateur identifié. Ainsi, le rédacteur nous dit que pour avoir des soupsons sur un hackage éventuel de notre site, on vérifie si pour la même session l'utilisateur n'a pas changé d'IP. Pareil pour le browser. Plus précisément, il dit qu' un utilisateur ne vat pas s'amuser à changer de navigateur d'une page à l'autre (j'comprend pas).
    C'est sur cette dernière phrase que je plante. Aparament sa veut dire que :
    1) Il faut effectuer un test d'adresse IP et de browser à chaque changement de page, de la part de l'utilisateur (pouvez-vous me confirmé cela ???)
    2) Je n'arrive pas à imaginer commant un hacker peut s'introduire dans un espace sécurisé du site avec un identifiant de session déjà utilisé. Si le hacker trouve un identifiant de session déjà utilisé par un utilisateur, et si ce même utilisateur avait fermé son navigateur avant ce vol de session, alors je me demande si ce numéro de session est encore réutilisable pour avoir acces à cet espace sécurisé ???
    3) Si la réponse est contraire à ce que j' hypothèse dans le 2), alors je ne vois qu'une seule explication pour réutiliser une session volée : le hacker vole et utilise un identifiant de session dont la session est encore en cours d'utilisation par l'utilisateur.

    Voilà c'est assez compliquer d'expliquer ce que je n'arrive pas à me faire expliquer en ce moment.

    Merci infiniment pour votre aide

  8. #8
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Ce que tu as mis en rouge, je vais te donner un exemple pour illustrer

    1) Tu navigue sur ma page d'accueil.
    2) Tu suis le lien des session et tu arrive a l'article sur les session

    Crois tu que entre ces 2 étapes quelqu'un change de navigateur ?

    Si apr exemple tu détecte avec sur la page 1 (grâce aux session) que le browser enregistrer est Firefox.
    Puis sur la page 2 pour la même session Internet Explorer.

    C'est complètement absurde. La vérification du browser est faite pour ca.

    C'est pareil pour l'adresse Ip, si il y a un changement d'IP entre 2 requete c'est qu'il y a un leger probleme avec cet utilisateur.

    Si tu ne comprend pas bien comment quelqu'un peut s'infiltrer et prendre place sur une session d'autrui, un article sur la sécurité devrais normalement sortir d'ici peu. Je suppose que ca y sera expliquer.

  9. #9
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Ok merci pour ta réponse.
    C'est vrai que j'ai du mal à comprendre comment un pirate peut prendre place sur la session d'autruit. C'est sa qui me ronge!

  10. #10
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par nicoaix
    .....Normalement c'est pas le numéro de session qui change quand un meme utilisateur se déconnecte et se reconnecte, mais c'est le fichier de session qui est détruit (donc son numéro aussi) et un autre fichier de session est créé (avec un nouveau numéro de session).
    Il ne devrait donc pas être possible d'avoir 2 fichiers pour un même utilisateur........
    Salut

    Entièrement d'accord avec nicoaix ( et à 100%) avec ce point de vue.

    Dans ce cas :

    Ce que nous précise pas justement AzertyH, est-ce qu'il y a effectivement deconnexion de l'utilisateur concerné ?

    Ou plus precisemment, est-ce que ce même utilisateur a la possibilité de se relogger une fois qu'il est identifié ?....et ceci sans fermer le navigateur ( ??)

    Ceci expliquerait tout.

  11. #11
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Pour essayer d'être clair, tout d'abord voici le début de ma page index.php qui est la page par défaut quand un utilisateur arrive sur mon site:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?PHP
    session_start();
    $_SESSION = array();
    if (isset($_COOKIE[session_name()])) {
        setcookie(session_name(), '', time()-42000, '/');
    }
    session_destroy();
    Ceci me permet de détruire la session de l'utilisateur (et de vider les variables de session) s'il en avait une.

    Ensuite un point important : j'ai réglé mon serveur web pour que les sessions soient détruite automatiquement au bout d'une heure (session.cookie_lifetime = 3600)

    Ceci étant dit, voici un exemple de connexion avec mon compte d'utilisateur Toto:
    1. Je vais sur la page index.php et j'y saisi (dans un formulaire) mon nom d'utilisateur 'toto' et mon mot de passe 'password'.
    Ceci a pour résultat d'une part de me renvoyer (après identification dans la base de données) vers une page d'acuueil et d'autre part de créer le fichier de session sesssion_56rfg68ery68re457gfds7 dans lequel se trouve mon nom d'utilisateur, mon IP... Ce fichier est créée dans le répertoire tmp situé un cran au-dessus de mon arboresence web. Mon site web est dans C:\Program Files\wamp\www et mon répertoire de sessions est dans C:\Program Files\wamp\tmp
    Je précise que ce chemin est modifié dans le php.ini
    2. Je me reconnecte 3 heures plus tard sans avoir rien touché depuis. Je lance un navigateur et je vais sur la page index.php et je me connecte comme en 1.
    Je suis redirigé, normalement vers la page d'accueil. Mais quand je vais voir dans mon répertoire /tmp j'ai 2 fichiers de session.

    Or normalement si la durée de vie des cookies de session est d'une heure je ne devrais plus avoir de fichier de session (hormis le dernier que je viens de crééer en me reconnectant).

    Et ce qui me gène le plus c'est que ce phénomène est aléatoire. C'est à dire qu'avec certains utilisateurs la déconnexion fonctionne bien et les fichiers sont bien détruits et avec d'autres ça semble ne pas fonctionner...mystère.

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Ton cookie de session est détruit, mais pas forcément le fichier texte sur le serveur. Le répertoire temporaire est purgé régulièrement, mais pas en temps réel. Cela explique la présence de fichiers de session d'utilisateurs non connectés.
    La question de sécurité est donc : un hacker peut-il utiliser ce fichier de session obsolète pour se connecter avec le même id de session en trafiquant son cookie ?

Discussions similaires

  1. [WS 2003] Rallonger le temps de verrouillage session pour un utilisateur
    Par kimz dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 04/03/2011, 15h40
  2. [WS 2003] Terminal Server: Une session pour plusieurs utilisateurs?
    Par adundev dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 15/04/2010, 13h37
  3. Éviter plusieurs sessions pour un même utilisateur
    Par Evocatii dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2008, 14h19
  4. Réponses: 1
    Dernier message: 24/07/2007, 11h34

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