Introduction
PHP est un langage puissant et l'interpréteur, qu'il soit inclus dans le serveur web en tant que module ou bien compilé en version CGI, est capable d'accéder aux fichiers, d'exécuter des commandes, et d'ouvrir des connexions réseaux. Toutes ces propriétés rendent fragile la sécurité d'un serveur web. PHP a été conçu comme un langage beaucoup plus sécurisé pour écrire des programmes CGI que le Perl ou le langage C, et, avec une sélection rigoureuse des options de compilation et d'exécution et de bonnes habitudes de programmation, il vous permettra d'obtenir un équilibre parfait entre liberté et sécurité.
Étant donné qu'il existe de nombreux moyens d'utiliser le langage PHP, vous trouverez de nombreuses directives de configuration permettant d'en contrôler le comportement. Un grand nombre d'options permet d'utiliser PHP dans de nombreuses situations, mais signifie aussi que certaines combinaisons d'options de compilation et d'exécution peuvent fragiliser la sécurité du serveur. Ce chapitre explique comment les différentes options de configuration peuvent être combinées, tout en conservant une sécurité maximum.
La flexibilité de configuration de PHP est épaulée par la flexibilité du code. PHP peut être utilisé pour construire des applications serveur complètes, avec tous les pouvoirs d'un utilisateur shell, ou il peut être utilisé pour de simples SSI (server side include) avec peu de risque dans un environnement à sécurité renforcée. La création de cet environnement et sa sécurisation sont largement à la charge du développeur PHP.
Ce chapitre commence par quelques conseils généraux de sécurité, explique les différentes options de configuration et les situations dans lesquelles elles peuvent être utilisées en toute sécurité, puis décrit quelques points à considérer lorsque l'on programme pour différents niveaux de sécurité.