Chapitre 5. Sécurité

Table des matières
Considérations générales
Binaires CGI
Module Apache
Sécurité des fichiers
Rapport d'erreur
Utilisation des variables HTTP
Données transmises par les internautes
Masquer PHP
Etre à jour

PHP est un langage puissant et l' interpréteur , qu'il soit inclus dans le serveur web 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 . Le langage PHP a été pensé afin d ' être un langage beaucoup plus sécurisé pour écrire des CGI que le Perl ou le langage C . De plus , une sélection rigoureuse des options de compilation et d' exécution vous permettra d 'obtenir un équilibre parfait entre liberté et sécurité .

Etant donné qu' il y a de nombreux moyens d'utiliser le langage PHP , il y a de nombreuses directives de configuration afin d 'en contrôler le comportement . Un grand nombre d' options permettent d'utiliser le PHP dans de nombreuses situations , mais cela signifie aussi qu'il y a certaines combinaisons d'options de compilation et d 'exécution qui fragilisent la sécurité du serveur . Ce chapitre explique comme les différentes options de configurations 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 compilé pour constituer une application serveur complète , avec toutes les fonctionnalités d' un shell , ou il peut encore être utilisé comme simple SSI (server side include ) avec peu de risque , dans un environnement à sécurité renforcée . Comment créer cet environnement et le sécuriser est largement à la charge du développeur PHP .

Ce chapitre commence par expliquer les différentes options de configuration et les situations dans lesquelles elles peuvent être utilisées en toute sécurité . Puis , viennent les considérations de niveaux de sécurité , et les conseils généraux .

Considérations générales

Un système complètement sûr est une impossiblité virtuelle . L' approche souvent utilisée par les professionnels de la sécurité est d'équilibrer les risques et l 'ergonomie . Si chaque variable fournie par l' utilisateur demandaient deux formes de validation biométrique (un scan de la rétine et une empreinte digitale) , on obtiendrait un système avec un niveau de sécurité d 'un bon niveau . Il faudrait aussi une bonne heure pour remplir un formulaire simple , ce qui encouragerait les utilisateurs à trouver un moyen de contourner cette sécurité .

La meilleure sécurité est suffisamment discrète pour assurer un maximum de sécurité sans ajouter de contraintes insurmontables pour l ' utilisateur ou de systèmes complexes de programmation . Souvent , les attaques sur un script sont des exploitations des sysèmes de sécurité trop complexes , qui s ' érodent au cour du temps .

Un principe qu ' il est bon de retenir : Un système est aussi sur que son maillon le plus faible . Si toutes les transactions sont bien notées dans une base , avec confirmation mais que l' utilisateur n 'est authentifiée que par un cookie , la robustesse de votre système est sévèrement réduite .

Lorsque vous testez votre site , gardez en tête que vous ne pourrez jamais tester toutes les situations , même pour les pages les plus simples . Les valeurs que vous attendez seront toujours complétement différentes des valeurs qu ' un employé négligent , un hacker qui a toute la nuit devant lui ou encore le chat de la maison qui marche sur le clavier . C' est pourquoi il est préférable de regarder le code d'un point de vue logique , pour repérer les points d 'entrée des données inattendues , puis de voir comment elles pourront être modifiées , amplifiées ou réduites .

L' Internet est rempli d'individu qui tentent de se faire une renommée en piratant vos programmes , en bloquant votre site , en envoyant des contenus inappropriés , qui rendent vos journées si "spéciales " . Peut importe que vous ayez un grand portail ou un petit web , vous pouvez être la cible pour tout quidam avec une connexion . Vous êtes une cible potentielle dès que vous êtes connecté vous-même . Certains programmes de piratage ne font pas dans la demi-mesure , et testent systématiquement des millions d ' IP , à la recherche de victimes : ne soyez pas la prochaine .