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] Système de session rapide et sécurisé


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut [Cookies] Système de session rapide et sécurisé
    Bonjour,

    Je suis en train de developper une application permettant de gérer des listes de médias (musique ou vidéo). Pour simplifier, nous pouvons assimiler son fonctionnement à un forum (vu qu'on retrouve le principe). J'ai un système permettant aux internautes de s'enregistrer. Mon problème se pose au niveau de la gestion des sessions.

    En effet, plusieurs cas se proposent à moi :

    1. Utiliser les sessions implantées directement par PHP. C'est la solution qui semble la plus simple à implanter, mais qui posent certains problèmes aussi. D'une part, il y a des problème de sécurité (car les sessions sont souvement sauvegardé dans un dossier temporaire, accessible à plusieurs personnes, sur un hebergement mutualisé). Et surtout, pas vraiment pratique pour afficher le nombre et la liste des personnes actuellement connectées...

    2. Une autre solution serait d'utiliser les sessions implantée par PHP, et de rajouter un fichier listant les personnes actuellement connectées (par exemple, un fichier contenant array avec les membres connectés). Mais, si ce fichier est modifié par plusieurs personnes en meme temps, il risque peut etre d'y avoir des conflits d'écriture... Et puis, cela ne résout pas le problème de "sécurité".

    3. Une autre solution serait de passer par les bases de données... Beaucoup de forum utilisent ce principe après tout, mais ça reste un peu lourd quand même, je trouve... Et si on choisi d'utiliser une table de type HEAP, c'est beaucoup plus rapide, mais on se prive aussi de champ de type TEXT (pour sauvegarder des données en sessions, par exemple).

    4. Enfin, une autre solution serait de réinventer la roue, et de créer mon propre système de session par fichier texte, comme je le veux. Mais là encore, il risque peut etre d'y avoir des conflits entre les fichiers si le site est beaucoup visité...


    Je ne sais pas si cela expose très clairement le problème qui se pose, problème auquel je ne sais pas du tout répondre à l'heure actuelle... Avez vous une solution miracle, une piste, ou un lien pouvant m'aider ?

    Je précise que cette application sera probablement redistribuée, donc je n'ai pas vraiment accès à la configuration du serveur qui va l'héberger.


    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Simple...
    NE PAS réinventer la roue.
    Utiliser les variables de session pour les informations de sessions.
    De plus, de toute façon tu as une base de données des utilisateurs donc tu utilises cette BD pour enregistrer et voir qui est en ligne.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    +1
    - Les sessions pour les variables relatives à la navigation de chaque utilisateurs.
    - La base de donnée ou tu mets un champs last_access int(11) dans ta table utilisateur et que tu réinitialise a time() a chaque chargement (ou lorsqu'il est < time - X). Tu regardes ensuite qui s'est connecté depuis moins de X minutes pour savoir qui est en ligne.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Oui, c'est une solution, mais ça ne résout pas mon problème de sécurité. Au début, je pensais tout simplement changer le dossier d'enregistrement des sessions, mais d'après ce que j'ai pu entendre, certains serveurs ont désactivé la fonction session_save_path()... Vous confirmez ?

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    ah ça, de toute façon, libre a l'hébergeur d'activer / désactiver ce qu'il veut...
    Pris comme ça, certains hébergeur peuvent également t'interdire d'écrire dans un fichiers via un script PHP...

    EDIT :
    Pour ce qui est de la sécurité, de toute façon, ne te prend pas la tête, tu seras dépendant de ce que propose l'hébergeur quoiqu'il arrive.
    Si tu veux de la sécurité, il te faut un hébergement privé voir dédié, auquel cas, c'est toi et toi seul qui parrametrera l'ensemble du serveur. Tu n'auras plus alors à te préocuper de la sécurité au niveau de tes sessions, des droits d'accès à ton fichiers ou des autres domaines hébergés sur le serveur.

    Tu veux de la vrai sécurité -> serveur dédié/privé + cookies + BDD

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Il y a sécurité et sécurité aussi...
    Mais disons que si le dossier d'enregistrement des sessions est accessible par plusieurs personnes, il devient alors très simple de modifier ces sessions pour se faire passer par un administrateur ou autre... plutôt génant tout de même...

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Je t'avous que je ne sais pas du tout comment c'est fait ces fichiers, mais ça me surprendrais quelque peut du PHP que n'importe qui puisse acceder à ça sans problème...
    Le hack serait beacoup trop facile, il suffirait pour hacker un site d'ouvrir un hébergement sur le même serveur que sa cible...
    Enfin bon...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    A vrai dire, cette crainte s'appuie essentiellement sur cette phrase :

    Les sessions créées sur un site sont enregistrées dans un dossier sur le serveur nommé par défaut /tmp. Si par mégarde le serveur venait à être mal configuré, tout le monde hébergé sur ce serveur aurait accès à ce répertoire et donc aux informations contenues dans les sessions.
    Si vous utilisez une base de données pour les stocker, ce problème disparaît.
    http://a-pellegrini.developpez.com/t...b/?page=page_1



    De même, on retrouve la même idée sur :
    http://phpsec.org/projects/guide/fr/5.html

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    pas mal le coup des sessions sauvegardés sous mysql
    mais ca ouvre un autre problème : que se passe t il si l'utilisateur obtient malicieusement le controle des bases mysql ? il a tout a coup accès aux infos de sessions non ? Donc on a un avantage c'est de limiter la casse par le php mais ca augmente le risque au niveau mysql il me semble ...

    il est primordial d'avoir safe_mode à off dans tous les cas.

    et phpsuexec (mod_suphp) ca limite grandement les risques d'intrusion dans des fichiers qui n'appartiennent pas à l'utilisateur en question (pratique quand on a des dizaines de virtualhosts différents)

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Oui. Mais le problème est que je n'ai pas vraiment accès à la configuration du serveur, vu que c'est un script qui sera redistribué.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    si tu implémentes :

    1/ sessions par cookies (session.use_only_cookies)

    2/ chiffrage SSL

    3/ crypter les infos et mots de passes de sessions en md5 par exemple

    je pense que tu ne devrais pas trop avoir de problème de sécurité

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Sauf que pour ça, encore faut il avoir accès à la configuration du serveur
    Donc ça ne répond pas vraiment à la question

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Tu te prend la tête pour un problème insoluble là ! si t'as pas accès à la conf du serveur, tu peux pas controlé la sécurisé !
    Fais ton boulot de programmeur, et laisse faire les hébergeurs le leur, quitte a fournir un readme avec ton appli...

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Insoluble, pas tant que ça...
    En fait, ma question a été deformée au fil des réponses.


    Ce que je souhaite savoir, c'est le risque réel que présente la sauvegarde des sessions dans un repertoire temporaire commun à plusieurs webmaster. A vrai dire, j'ai du mal à croire que modifier les sessions soit aussi simple à faire que le laisse entendre les liens donné précedement, sur un serveur normalement configuré... Je voulais donc avoir plus de renseignement pour savoir ce qu'il en était réellement, et pour savoir si la sauvegarde des sessions en bdd était vraiment justifié.

Discussions similaires

  1. [Cookies] suppression de cookie et de session
    Par LarZuK dans le forum Langage
    Réponses: 5
    Dernier message: 06/02/2006, 20h01
  2. [Système] Id session Windows
    Par Néo-Tony dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 25/01/2006, 10h36
  3. [Cookies] newbie: Les sessions en PHP
    Par yoda_style dans le forum Langage
    Réponses: 12
    Dernier message: 20/01/2006, 21h49
  4. Réponses: 2
    Dernier message: 05/12/2005, 12h02
  5. besoin info sur le cookie et la session ?
    Par vbcasimir dans le forum Web
    Réponses: 8
    Dernier message: 16/11/2005, 12h45

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