SommaireTelecharger la documentationChapitre suivantChapitre precedent  

 
Raccourci :  

6.1 Gestion des connexions
6.2 Cookies
6.3 Gestion des erreurs
6.4 Gestion des chargements de fichier
6.5 Authentification HTTP avec PHP
6.6 Création d'images
6.7 Connexions persistantes aux bases de données
6.8 Utilisation des fichiers à distance
6.9 Safe mode

6.9 Safe mode
[Notes en ligne] 

Le "Safe Mode" est le mode de sécurité de PHP : une solution au problème de partage de PHP sur un serveur. Ce système pêche au niveau de l'architecture car il n'est pas correct de tenter de résoudre ce problème au niveau de PHP, mais les solutions alternatives basées sur le serveur web et l'OS ne sont pas réalistes. De nombreux acteurs, notamment les fournisseurs d'hébergement, utilise le "Safe Mode".
Les directives de configuration qui contrôlent le safe mode sont :

safe_mode = Off
open_basedir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
    


Lorsque safe mod est actif, PHP vérifie que le propriétaire du script courant est le même que le propriétaire de fichier qui seront manipulé par ce script. Par exemple, si on a la situation suivante :


-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php
-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
    

Exécuter le script `script.php'


<?php
 readfile('/etc/passwd');
?>
    

générera cette erreur, si le safe mode est activé :

Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2
   


Si vou utilisez la directive open_basedir au lieu du safe mode, alors les manipulations seront limitées aux fichiers situés dans les dossiers spécifiés. Par exemple :


<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
   

Si vous exécutez le script `script.php' ci-dessus avec la configuration d'open_basedir le résultat sera l'affichage suivant :

Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2
    


Vous pouvez aussi désactiver individuellement les fonctions. Par exemple, en ajoutant cette ligne dans le fichier `php.ini' :

disable_functions readfile,system
    

toute utilisation des fonctions readfile() et @xref{function.system,,system()} générera l'affichage suivant :

Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2
    


Sommaire:

  • 6.9 Safe mode
    Sommaire:


    Sommaire:



  • Chapitre précédentChapitre suivantAccueil nexen.net