PHP : Sécuriser les fichiers .inc

Un fichier .inc contient le même genre de code qu'un fichier .php. Cependant, par convention, on utilise l'extension .inc pour indiquer qu'il ne s'agit pas d'une page Web mais plutôt d'un fichier non autonome, qui sera INClus dans un autre. On pourrait par exemple avoir un fichier .inc qui contient l'information à placer au début de chaque page Web du site, un autre fichier .inc qui contient les information à placer à la fin de chacune des pages, etc.

Normalement, un fichier .inc devrait par défaut jouir des mêmes protections qu'un fichier .php. Les configurations du serveur peuvent cependant offrir des protections différentes.

▼Publicité

Donc, si vous ne prenez pas certaines précautions, les fichiers .inc pourraient être lus directement dans le navigateur. Ceci ouvre un trou de sécurité important...

Pour vérifier si vos fichiers .inc sont à risque, essayez d'ouvrir un fichier .inc dans votre navigateur. Si vous voyez les balises HTML et/ou le code PHP plutôt que le rendu que ces balises devraient générer, c'est que le serveur ne protège pas adéquatement les fichiers .inc.

Notez que même si le fichier .inc est protégé, le rendu ne sera pas esthétique puisque ce fichier ne contient qu'un extrait des balises du site et qu'en l'appelant hors contexte, la feuille de style pourrait ne pas être correctement chargée.

Les extraits suivants ont été réalisés sur un serveur local de développement pour fins de démonstration. Le même exercice devra être réalisé sur le serveur de production afin de vérifier si les fichiers .inc y sont protégés.

Exemple de fichier .inc protégé

Fichier .inc protégé adéquatement par Apache

   Exemple de fichier .inc non protégé

   Fichier .inc non protégé

Pour assurer que votre site soit sécurisé, quelques options s'offrent à vous :

  • Une solution simple pour protéger les fichiers .inc consiste à placer ces fichiers dans un dossier qui n'est pas placé sous le dossier racine du serveur Web (ex : dans un dossier qui n'est pas sous www). Cette solution ne sera cependant pas réalisable si votre hébergeur ne vous offre que l'accès au dossier racine de votre site Web (ex : accès au dossier www\monsiteweb).
  • Autre solution : plutôt que de nommer vos fichier par un nom se terminant par « .inc », vous pouvez leur donner l'extension « .inc.php » (ex : entete.inc.php). Ceci ne fera aucune différence au niveau de la façon dont le serveur interprétera le code.
  • Si vous préférez conserver l'extension .inc et que vous ne pouvez les placer dans un dossier qui n'est pas sous la racine du serveur Web, vous devrez sécuriser votre serveur. Avec Apache, vous pourrez prévenir l'affichage en clair du contenu d'une page .inc en ajoutant le code suivant au bas du fichier httpd.conf :

    Ex :

    Fichier httpd.conf

    <Files *.inc>

       Order allow,deny

       Deny from all

    </Files>

Pour plus d'information

« PHP Security Guide: Databases and SQL ». PHP Security Consortium. http://phpsec.org/projects/guide/3.html

« Prevent Include/Configuration File Access ». David A. Wheeler. http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO.html#PREVENT-INCLUDE-ACCESS

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories