La solution la plus simple pour la situation générique "application PHP fonctionnant sur un serveur Apache que vous pouvez ou non contrôler entièrement" est de placer vos includes dans un répertoire et de refuser l'accès à ce répertoire dans votre fichier .htaccess. Pour éviter aux gens d'avoir à chercher sur Google, si vous utilisez Apache, placez ce fichier dans un fichier appelé ".htaccess" dans le répertoire auquel vous ne voulez pas avoir accès :
Deny from all
Si vous avez le contrôle total du serveur (ce qui est plus courant de nos jours, même pour les petites applications, qu'à l'époque où j'ai écrit cette réponse), la meilleure approche consiste à placer les fichiers que vous voulez protéger en dehors du répertoire à partir duquel votre serveur web est servi. Donc si votre application est dans /srv/YourApp/
le serveur doit servir les fichiers à partir de /srv/YourApp/app/
et mettre les inclusions dans /srv/YourApp/includes
donc il n'y a littéralement aucune URL qui peut y accéder.
13 votes
Au lieu de die(), vous devriez tester 'header("HTTP/1.1 404 File Not Found", 404) ; exit;'. Ceci (au moins sur Apache) fera en sorte que le serveur renvoie la page 404 normale.
1 votes
Voici deux méthodes simples que j'ai expliquées pour désactiver l'accès direct dans les fichiers inclus dans PHP -. codespeedy.com/disable-direct-access-to-the-php-include-file