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 27/11/2006, 13h56   #1
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
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.
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 14h37   #2
Membre chevronné
 
Avatar de efficks
 
Inscription : septembre 2005
Messages : 714
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 714
Points : 689
Points : 689
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.
__________________
Avant de poster : FAQ, tutos, rechercher, google, ... Après :
Merci
efficks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 15h25   #3
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
+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.
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 16h01   #4
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
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 ?
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 16h20   #5
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
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
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 16h29   #6
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
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...
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 16h53   #7
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
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...
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 17h23   #8
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
A vrai dire, cette crainte s'appuie essentiellement sur cette phrase :

Citation:
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
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 15h29   #9
Candidat au titre de Membre du Club
 
Inscription : novembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 11
Points : 11
Points : 11
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)
pureweb.fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 16h03   #10
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
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é.
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 16h26   #11
Candidat au titre de Membre du Club
 
Inscription : novembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 11
Points : 11
Points : 11
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é
pureweb.fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 17h04   #12
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
Sauf que pour ça, encore faut il avoir accès à la configuration du serveur
Donc ça ne répond pas vraiment à la question
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 17h52   #13
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
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...
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 13h40   #14
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
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é.
Jukien 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 15h37.


 
 
 
 
Partenaires

Hébergement Web