Protection de script PHP

J’ai eu un problème terrifiant il y a quelques jours. J’étais en train d’installer des mises à jour sur mon serveur Ubuntu, qui héberge environ 10 sites Web. Au cours de la mise à jour, quelque chose s’est mal passé et les apaches mod_php été désactivés. En conséquence, le support de PHP a disparu, et pendant quelques minutes (jusqu’à ce que je me demande ce qui ne va pas), les utilisateurs ont été invités à télécharger des scripts PHP, au lieu de consulter un site Web. Inutile de dire qu’il n’y a rien de pire que d’exposer vos sources de script au monde entier, en particulier lorsque les informations d’identification de la firebase database sont conservées à l’intérieur.

La question: Comment puis-je configurer Apache pour que cette situation ne soit plus possible à l’avenir? Quelles lignes dois-je append à apache2.conf, de sorte que les fichiers PHP ne puissent pas être téléchargés, si mod_php est désactivé?

Ajoutez simplement ce qui suit au fichier .htaccess dans le répertoire racine

 php_admin_flag engine on 

Dans ce cas, l’utilisateur aura l’erreur HTTP 500 en essayant de lire n’importe quel fichier de ce répertoire et ci-dessous car aucun module ne définit la directive php_admin_flag dans le cas où mod_php est désactivé.

Une approche plus sécurisée consisterait simplement à ne pas mettre d’objects auxquels vous ne souhaitez pas accéder dans la racine du document. Voir ma réponse ici qui fournit plus de détails; l’idée de base est la suivante: si vous ne voulez jamais accéder à un fichier via une URL, ne placez pas le fichier dans un emplacement accessible par URL. 99% de votre code d’application ne doit pas être sous la racine du document; peu importe ce que vous faites pour votre configuration apache / php, vous êtes toujours en sécurité.