Sécurité et SSL

Restreindre des fonctions PHP sans casser l'application

Vérifié le 2 min de lecture sécurité web PHP

PHP comprend des fonctions qui permettent d'exécuter des processus, d'ouvrir des connexions ou d'interagir avec le système. Certaines applications en ont besoin, d'autres non.

disable_functions peut réduire ce qu'un code PHP déjà exécuté est capable de faire, mais ne corrige pas une vulnérabilité et ne remplace ni les mises à jour, ni l'isolation, ni le moindre privilège, ni l'analyse d'une intrusion.

Dans cPanel > Select PHP Version > Options, cherchez disable_functions, si le sélecteur le permet. Vérifiez la version et la portée du réglage ; plusieurs sites peuvent partager cette configuration.

Ne supprimez pas la configuration existante et ne copiez pas une liste générique. Notez sa valeur actuelle et désactivez uniquement les fonctions dont vous avez vérifié que l'application n'a pas besoin. Comme point de départ pour une application qui n'exécute pas de processus système, vous pouvez évaluer une par une des fonctions comme :

exec,passthru,proc_open,shell_exec,system

N'incluez pas eval : c'est une construction du langage et disable_functions ne peut pas la désactiver. Ne désactivez pas non plus de fonctions réseau, de fichiers, de processus ou de journalisation sans vérifier d'abord les dépendances et les tâches planifiées de l'application.

Après chaque modification, vérifiez le fonctionnement complet des sites, des tâches planifiées et des processus de maintenance. Si une fonction est nécessaire, réactivez-la et appliquez un contrôle adapté dans une autre couche.

Testez séparément les requêtes web et les commandes en console, qui peuvent utiliser des configurations PHP différentes. N'essayez pas de modifier cette directive avec ini_set() dans l'application : PHP la traite comme une configuration système.

Depuis PHP 8, une fonction désactivée n'est plus définie et le code utilisateur peut en définir une autre portant ce nom. Elle ne doit donc pas être considérée comme une barrière d'isolation suffisante. La documentation de PHP en explique les limites.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.