Page 1 sur 1

Où est stocké le contenu de la variable $_SESSION sur Apache

Posté : 15 oct. 2006, 04:27
par zeuf
Salut à tous !

Je cherche depuis des heures et je ne trouve pas.

Est-ce que vous savez où le serveur (Apache dans mon cas) stocke le contenu des variables de $_SESSION ? Je sais que c'est dans un fichier, mais où ?

Et tant qu'on y est : Quel est le nombre maximum de variables de SESSION qu'on peut créer et quelle taille peuvent-elles avoir ?

Merci et A +

Posté : 15 oct. 2006, 05:45
par Ajoloca
Bonjour,

Les sessions ne sont pas stockées par Apache mais par PHP lui-même.
Elles ne sont pas dans un fichier mais chaque session est un fichier.
La taille maxi est limitée soit par les cotas (Unix/Linux) soit par le système de fichiers (4 Go sous XP/NTFS) sinon par l'espace disque disponible.
L'emplacement par défaut est defini dans le fichier de configuration de PHP (php.ini) par la directive 'session.save_path'

Posté : 15 oct. 2006, 05:59
par zeuf
Salut Ajoloca !!

Encore toi !! Décidemment, tu ne dors pas la nuit !! hé hé...

Ok donc le fichier est inaccessible depuis le net sauf pour des petits très malins.

J'adore la variable $_SESSION !!

Merci en tout cas pour l'info !

A + (à toute à l'heure peut-être !!)

Zeuf

Posté : 15 oct. 2006, 06:22
par Ajoloca
Re,
Comme je te l'ai dis l'emplacement par défaut est fixé dans php.ini mais rien ne t'empèche de modifier cette directive dans ton script, donc pour que le "malin" y accède... surtout si tu protèges ton répertoire ou encore mieux tu le places dans un répertoire inaccessible par le serveur web et tant qu'on-y-est les trois protections et on en parle plus !

Posté : 15 oct. 2006, 06:26
par zeuf
Hé hé, oui j'avais bien compris !!

1. Changer le fichier d'emplacement dans le Php.ini

2. lui donner un autre nom

3. Le mettre en dehors du root Web

4. lui coller un .htaccess (Mais j'espère que la session PHP y aura accès !!)

Merci Aj... (Haj veut dire le pélerin, l'homme saint, hé hé)

A +

Posté : 15 oct. 2006, 09:25
par naholyr
4. lui coller un .htaccess (Mais j'espère que la session PHP y aura accès !!)
PHP accède à ces fichiers en "direct" (chemin du système de fichier) et pas via le serveur web (http://... ) donc le .htaccess ne lui fera ni chaud ni froid.

Chez Free par exemple les sessions sont stockés dans un répertoire sessions que l'on doit créer. Jusqu'à il n'y a pas si longtemps que ça il n'était pas protégé par défaut et il fallait ajouter un .htaccess nous-même sous peine de voir toutes les sessions accessibles à tous : en effet ces fichiers ne sont pas cryptés, et portent pour nom l'id de session en clair. Donc accès au dossier des sessions = vol de session ultra-facile.

Posté : 15 oct. 2006, 17:18
par zeuf
Salut !

Merci Naholyr pour ta précision.

Et pour ce qui est du nombre de variables :
...
Le support des sessions vous permet d'enregistrer un nombre illimité de variables qui doivent être préservées entre les requêtes.
... Manuel PHP 5
Je pense qu'il est aussi bon de me rappeler que :
Sessions et sécurité

Utiliser les sessions ne signifie pas que les données de session ne pourront être vues que par un seul utilisateur. Il est important de garder cela en tête lorsque vous stockez et affichez des données importantes. Lorsque vous stockez des données dans une session, il faut se demander quels seront les problèmes posés si quelqu'un d'autre accède à cette information, ou comment votre application est affectée si la session est en fait celle d'un autre.

Par exemple, si quelqu'un usurpe une session, il peut alors poster un message dans un forum sous une fausse identité. Quelle est la gravité de ce problème ? Ou bien, il peut accéder aux commandes d'un client, et même, modifier son panier d'achat. À priori, c'est moins problématique pour un fleuriste que pour un pharmacien. Si vous voulez résoudre ce souci de façon simple, il peut être utile d'activer session.use_only_cookies. Dans ce cas, les cookies devront être activés par le client, sinon, les sessions ne fonctionneront pas.

Par conséquent, lorsque vous manipulez des données importantes, il faut exploiter d'autres méthodes pour décider si une session est valide ou pas. Les sessions ne fournissent pas une méthode fiable d'identification.

Les sessions reposent sur un identifiant de session, ce qui signifie que quelqu'un peut voler cet identifiant, rien qu'en volant l'ID. Ce vol peut être rendu très difficile, comme en utilisant les cookies, mais en aucun cas cela sera impossible. Les sessions dépendent aussi de la discipline de l'utilisateur qui referme son navigateur à la fin de la session pour tout clore proprement. De plus, même les cookies de session peuvent être surveillés sur un réseau, ou bien notés par un proxy car ils transitent en clair sur le réseau. Pour remédier à cela, vous devriez implémenter un chiffrage SSL sur votre plate-forme.

Manuel PHP 5
A +