DY

DelahayeYourself

modules / S1103 /

TP14: PHP & la sécurité

Ce TP n’a pas pour but de faire de vous des experts en sécurité, le sujet est aussi vaste que complexe et couvre plus de domaines que le cadre de ce module. Néanmoins j’espère par ce TP vous sensibiliser à ce sujet.

L'accès au fichier php

Par défaut un serveur HTTP comme apache va servir l'ensemble de vos fichiers php présents dans le répertoire du site web. Ce mode de fonctionnement est parfait pour les fichiers constituant les pages de notre site web (index.php, news.php, contact.php, ..).

Toutefois nous ne voulons pas que nos fichiers de données (data.php) ou encore de fonctions (functions.php) puissent être vus par les internautes.

Nous allons donc en empêcher l'accès de manière programmatique.

Pour la suite de ce TP nous envisagerons la structure de site web suivante:

---index.php
---news.php
---data.php
---functions.php

Nous voulons donc accéder à la page d'accueil et à la page d'actualités mais ne pas voir le contenu des fichiers data et functions.

Pour ce faire nous allons utiliser les constantes PHP ainsi que la fonction die.

Dans le fichier const.php ajouter en haut du fichier le code suivant:

<?php
    define('ACCESSIBLE', '1');

Puis nous allons inclure en premier ce fichier dans index.php & dans news.php.

En revanche nous n'allons pas l'inclure dans data.php et functions.php, de plus dans ces deux fichiers nous allons ajouter le code suivant:

<?php defined('ACCESSIBLE') or die('No direct script access.');

Cette ligne de code vérifie si la constante ACCESSIBLE est définie si ce n'est pas le cas la fonction die arrête immédiatement le script.

Il s'agit d'une bonne pratique d'inclure cette ligne dans l'ensemble de nos fichiers (à l'exclusion de nos pages) afin d'empêcher l'accès à nos scripts qui ne sont pas directement des pages de notre site web.