Problème
Vous voulez désactiver certaines fonctions PHP qui pourraient représenter un risque de sécurité si elles sont autorisées dans un système.
Vous voulez désactiver certaines fonctions PHP qui pourraient représenter un risque de sécurité si elles sont autorisées dans un système.
Certaines fonctions PHP peuvent présenter un risque de sécurité si elles sont autorisées dans un système. Ces fonctions incluent exec(), qui peut être utilisé pour exécuter des commandes shell dans un système s'il est exploité.
Vous pouvez désactiver les fonctions PHP afin de renforcer votre environnement PHP ou si vous utilisez un hébergement partagé où certaines fonctions peuvent poser un problème de sécurité.
1. Ouvrez le fichier de configuration PHP en utilisant votre éditeur de texte préféré.
$ sudo vi /etc/php/7.2/apache2/php.ini
Vous pouvez consulter cette question sur Où trouver le fichier de configuration PHP ?
2. Recherchez la directive disable_functions.
This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names.
; http://php.net/disable-functions
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
3. Ajoutez des fonctions à désactiver, séparées par une virgule (,) ou supprimez des fonctions existantes pour les activer.
This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names.
; http://php.net/disable-functions
disable_functions = date,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
4. Redémarrez le serveur web pour que la modification prenne effet.
$ sudo systemctl restart apache2
Voir Comment utiliser le serveur Apache ?
5. Vérifiez si la fonction a été désactivée avec succès.
Voir Comment afficher les fonctions désactivées en PHP ?