6.7.1 Securité et Safe Mode
Nom |
Par défaut |
Modifiable |
safe_mode |
"0" |
PHP_INI_SYSTEM |
safe_mode_gid |
"0" |
PHP_INI_SYSTEM |
safe_mode_include_dir |
NULL |
PHP_INI_SYSTEM |
safe_mode_exec_dir |
"" |
PHP_INI_SYSTEM |
safe_mode_allowed_env_vars |
PHP_ |
PHP_INI_SYSTEM |
safe_mode_protected_env_vars |
LD_LIBRARY_PATH |
PHP_INI_SYSTEM |
open_basedir |
NULL |
PHP_INI_SYSTEM |
disable_functions |
"" |
PHP_INI_SYSTEM |
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à
ini_set
.
Voici un éclaircissement sur l'utilisation des directives de configuration.
Voir aussi
register_globals ,
display_errors et
log_errors
Lorsque safe mode est actif,
PHP
vérifie que le
propriétaire du script
courant est le même que le propriétaire des
fichiers qui seront manipulés par ce script. Par exemple,
dans 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
Cependant, il arrive que la vérification faite avec le nom du propriétaire
du fichier soit trop restrictive, et qu'une vérification sur le nom
du groupe soit suffisante. C'est une autre fonctionnalité supportée
par la directive safe_mode_gid .
En lui donnant la valeur de
On
, les vérifications
seront faites sur le
GID
, alors qu'en lui laissant
sa valeur par défaut de
Off
, les vérifications seront
faites sur le
UID
.
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
system
générera l'affichage suivant :
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2
Sommaire :
|