Quick Tip – Les « includes » et les « require » de PHP

Avez-vous déjà utilisé les includes et les require de PHP ?

Si oui, vous êtes peut-être déjà tombés sur le problème suivant : lorsque l’on utilise un include, le caractère « null » coupe l’inclusion du fichier.

Publicités

Avez-vous déjà utilisé les includes et les require de PHP ?

Si oui, vous êtes peut-être déjà tombés sur le problème suivant : lorsque l’on utilise un include, le caractère « null » coupe l’inclusion du fichier.

Le problème est principalement posé lors de l’inclusion dynamique d’un fichier. Imaginez un simple sur le site example.com :


Il suffit d’utiliser l’URL http://example.com/?file=.htaccess%00 pour accéder au contenu du fichier .htaccess, et éventuellement bien pire !

Pour résoudre le problème ? Vérifier que le fichier inclus est bien un fichier que l’on autorise à l’inclusion, avec éventuellement un tableau des fichiers autorisés, tester que le fichier est bien un fichier PHP (et donc que le contenu sera interprété), et toute autre vérification, qui bien entendu ne sera pas superflue.

Mais évidement, vous faites déjà les vérifications nécessaires 😉

Auteur : Bruno Sabot

Développeur Front end, Mobile, Ergonomie, UX

3 réflexions sur « Quick Tip – Les « includes » et les « require » de PHP »

  1. Je me souvient d’un exemple en live d’un de mes prof de sécurité info qui grâce au include a réussi a faire interpréter le fichier de log du serveur, dans lequel il s’était arrangé pour y insérer du code malveillant. Assez terrifiant, bref, en tant que nobb php, ce que j’avais retenu est de ne jamais faire de include en php ^^.

    J'aime

  2. En effet, avec le problème que j’ai exposé, c’est l’un des risques. Lorsque le fichier de log du serveur contient le détail de l’URL demandée, elle peut éventuellement contenir du PHP, qui peut être interprété par la suite.

    Plutôt que de ne pas utiliser les include en PHP, il vaut mieux trouver une solution pour filtrer les données en entrées. Tableau de correspondance sur des petits sites, expression régulière sur des plus gros ou encore utiliser une fonction pour vérifier que le fichier inclus à bien le bon type et le bon chemin sur le serveur.

    Il y a heureusement plein de méthodes pour contourner les problèmes des include.

    Pour conclure, comme d’habitude, NEVER TRUST USER INPUT!

    J'aime

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s