[ressource] Chemin d'enregistrement des sessions

Ressources, trucs et astuces pour faire tourner Joomla! 1.5.x

Moderators: sarki, Aidan38

Forum rules
Règles du forum
User avatar
ouly
Joomla! Ace
Joomla! Ace
Posts: 1074
Joined: Sun Aug 21, 2005 9:18 pm
Contact:

[ressource] Chemin d'enregistrement des sessions

Postby ouly » Sat Apr 29, 2006 3:19 pm

Introduction

Les sessions sont utilisées pour conserver des informations relatives à un visiteur. Chaque visiteur se voit attribué automatiquement un numéro de session différent, ce qui permet de différencier les informations d'un visiteur de celles d'un autre visiteur. Typiquement, les sessions sont utilisées pour retenir qu'un visiteur s'est connecté. sessions.save_path est une directive PHP (= paramètre de PHP) qui définit dans quel dossier seront enregistrées les sessions gérées par PHP.

Généralement un chemin d'enregistrement des sessions (= sessions.save_path) par défaut est défini par l'hébergeur. Mais ce chemin peut correspondre à un dossier qui n'existe pas, ou un dossier qui ne peut pas être modifié (= création de fichiers et/ou modification de fichiers refusée). Du coup PHP ne peut pas enregistrer les sessions et ne peut donc pas retenir qu'un visiteur s'est connecté et la conséquence est qu'il n'est pas possible de se connecter dans l'administration (note : le fait qu'il ne soit pas possible de se connecter à l'administration ne vient pas forcément de la directive sessions.save_path, consultez ce sujet avant de continuer).

Chemin d'enregistrement des sessions

Pour déterminer le chemin par défaut, il est possible de créer un script PHP affichant toutes les informations nécessaires. A l'aide de votre éditeur de texte, créez un fichier, par exemple phpinfo.php, contenant les lignes suivantes :

Code: Select all

<?php phpinfo(INFO_MODULES); ?>


Transférez par FTP ce fichier sur le serveur, et ouvrez l'URL correspondante avec votre navigateur préféré.

Dans la page qui s'ouvre, cherchez le terme session.save_path qui doit se trouver dans une ligne d'un tableau.

Exemple :
session.save_path /var/www/sdb/1/f/oulydev/sessions /sessions


Conservez de côté (dans un éditeur de texte par exemple) les valeurs indiquées sur la ligne.

Chemin d'accès à l'espace d'hébergement

Toujours dans la même page, cherchez le terme SCRIPT_FILENAME. Ceci indique l'emplacement du fichier que vous venez d'ouvrir. Enlevez du chemin indiqué, le chemin FTP du fichier envoyé et vous obtenez le chemin absolu d'accès à votre espace d'hébergement

Exemple :
SCRIPT_FILENAME /var/www/sdb/1/f/oulydev/test/phpinfo.php

Sachant qu'à partir de la racine des dossiers accessibles par FTP (=
/), le chemin du fichier transféré est /test/phpinfo.php, le chemin absolu d'accès à l'espace d'hébergement est donc /var/www/sdb/1/f/oulydev.

Conservez de côté (dans un éditeur de texte par exemple) le chemin d'accès déterminé.

Emplacement du dossier d'enregistrement des sessions

En comparant les 2 chemins d'accès, il est possible de déterminer si le dossier d'enregistrement des sessions se trouve dans l'espace d'hébergement ou dans un dossier de l'hébergeur qui vous est inaccessible.

Exemple 1 :
session.save_path /var/www/sdb/1/f/oulydev/sessions
chemin d'accès /var/www/sdb/1/f/oulydev

Le dossier sessions est donc dans l'espace d'hébergement.


Exemple 2 :
session.save_path /tmp
chemin d'accès /var/www/sdb/1/f/unsitequelconque

Le dossier sessions n'est pas dans l'espace d'hébergement.


Dans l'espace d'hébergement

Si le chemin session.save_path est contenu dans votre espace d'hébergement, il sera nécessaire de créer les dossiers permettant de satisfaire l'accès au dossier demandé.

Exemple :
session.save_path /var/www/sdb/1/f/oulydev/undossier/sessions
chemin d'accès /var/www/sdb/1/f/oulydev

Le chemin session.save_path tente d'accéder au dossier [color=blue]/undossier/sessions
se trouvant à la racine de l'espace d'hébergement. Il sera donc nécessaire de créer le dossier undossier et, à l'intérieur, le dossier sessions.[/color]

Hors de l'espace d'hébergement

Si le chemin session.save_path n'est pas contenu dans votre espace d'hébergement et que le dossier indiqué n'est pas modifiable, il est possible de rediriger le chemin session.save_path vers un dossier dans votre espace d'hébergement.

Pour cela créez par FTP un dossier nommé, par exemple, sessions. Assurez vous que les permissions du dossier autorise la modification du contenu (exemple : chmod en 777 = RWXRWXRWX). Puis, à l'aide d'un éditeur de texte, créez un fichier htaccess.txt contenant le code suivant :

Code: Select all

php_value session.save_path /chemin/sessions


/chemin est à remplacer par le chemin absolu d'accès à l'espace d'hébergement.

Exemple :
chemin d'accès /var/www/sdb/1/f/oulydev
Le dossier [color=blue]/undossier/mes_sessions
a été créé par FTP, donc le code du fichier htaccess.txt correspond à :

php_value session.save_path /var/www/sdb/1/f/oulydev/undossier/mes_sessions


Transférez par FTP ce fichier à la racine de votre espace d'hébergement et renommez le en .htaccess

Sécurité

Pour des raisons de sécurité (usurpation d'identité, etc.), le dossier d'enregistrement des sessions ne doit pas être accessible depuis l'extérieur.

La première mesure à prendre est créer un fichier htaccess.txt, à l'aide d'un éditeur de texte, contenant le code suivant :

Code: Select all

Order Allow,Deny
Deny from all
Options None


Ensuite, transférer ce fichier par FTP dans le dossier d'enregistrement des sessions et le renommer en .htaccess

La deuxième mesure est de créer un fichier index.html, toujours avec un éditeur de texte, contenant le code suivant (par exemple) :

Code: Select all

<html><body bgcolor="#FFFFFF"></body></html>


Et transférer ce fichier par FTP dans le dossier d'enregistrement des sessions.

Pourquoi ? Si pour une raison quelconque (exemple : changement de configuration du serveur), le fichier .htaccess ne pouvait remplir sa fonction, le contenu du dossier pourrait être indexé (l'autorisation d'indexation du dossier dépend aussi de la configuration du serveur). Lors d'une tentative d'accès direct à un dossier (= indexation du dossier), par défaut Apache tente de charger un fichier index.html (attention : index.html et non index.htm !) se trouvant dans le dossier en question. Ainsi ce fichier index.html qui vient d'être placé dans le dossier d'enregistrement des sessions est une mesure supplémentaire freinant la découverte des identifiants de sessions.
Last edited by ouly on Sun Jun 11, 2006 2:28 pm, edited 1 time in total.

Return to “1.5 - Ressources”

Who is online

Users browsing this forum: No registered users and 3 guests