PHP est l'un des langages de programmation de script les plus utilisés. La part de marché en dit long sur sa position dominante. Le fait que PHP 7 ait été lancé rend ce langage de programmation encore plus attractif pour les développeurs actuels. Malgré quelques changements, de nombreux développeurs sont sceptiques quant à l'avenir de PHP. L'une des raisons est la sécurité de PHP.
Les administrateurs Linux doivent connaître les dix principaux points de sécurité PHP
PHP est l'un des langages de script les plus utilisés. La part de marché en dit long sur sa position dominante. Le fait que PHP 7 ait été lancé rend ce langage de programmation encore plus attractif pour les développeurs actuels. Malgré quelques changements, de nombreux développeurs sont sceptiques quant à l'avenir de PHP. L'une des raisons est la sécurité de PHP.
La sécurité de PHP est une préoccupation majeure pour les développeurs. Bien que PHP offre une sécurité solide de l’intérieur vers l’extérieur, il appartient aux développeurs d’implémenter correctement ces mécanismes de sécurité. Nous présenterons plusieurs points de sécurité PHP pour les administrateurs Linux dans cet article. Ces points vous aideront à sécuriser votre application web et à assurer son bon fonctionnement sur le long terme.
Avant de commencer, il est nécessaire de comprendre le système auquel nous avons affaire. À des fins de démonstration, nous utilisons Fedora. Cependant, ces points devraient s'appliquer aux versions d'Ubuntu ou à toute autre distribution Linux. Consultez le manuel de la distribution de votre système d'exploitation pour plus d'informations.
Examinons de plus près plusieurs fichiers clés de notre environnement système. Votre fichier doit ressembler ou correspondre à ce qui suit :
Serveur web par défaut : Apache
DocumentRoot : /var/www/html
Fichier de configuration PHP : /etc/php . ini
Répertoire de configuration étendu : /etc/php.d/
Fichier de sécurité : /etc/php.d/security.ini
Ces conseils protégeront votre site Web, évitez différents types d'attaques courantes, telles que l'injection SQL, XSS, les attaques de falsification de requêtes intersites, eval() et les attaques par téléchargement de fichiers. Une liste des attaques courantes peut être trouvée ici (https://www.sitepoint.com/top-10-php-security-vulnerabilities/).
1. Supprimez les modules inutiles.
PHP est livré avec un module php intégré. Ils sont utiles pour de nombreuses tâches, mais tous les projets n’en nécessitent pas. Entrez simplement la commande suivante pour afficher les modules PHP disponibles :
# php - m
Une fois que vous avez consulté la liste, vous pouvez désormais supprimer les modules inutiles. La réduction du nombre de modules permet d'améliorer les performances et la sécurité des applications Web sur lesquelles vous travaillez.
2. Limiter les fuites d'informations PHP.
Il est courant que les plateformes divulguent des informations clés. Par exemple, PHP divulgue des informations telles que la version et le fait qu'il a été installé sur le serveur. Ceci peut être réalisé via la commande expose_php. Pour éviter les fuites, vous devez désactiver cette commande dans /etc/php.d/security.ini.
expose_php=Off
Si vous avez besoin de connaître la version et son statut, exécutez simplement une simple commande Curl sur l'adresse du site Web pour obtenir les informations.
Curl - I http://www.kubiji.cn/index.php
La commande précédente renverra les informations suivantes :
HTTP/1.1 200 OK
X-Powered-By : PHP/7.0.10
Content-type : text/html; charset=UTF-8
3.
L'exécution de code à distance est l'une des vulnérabilités de sécurité courantes dans les systèmes de sécurité PHP. Par défaut, l'exécution de code à distance est activée sur votre système. La commande "allow_url_fopen" permet à des fonctions telles que les wrappers fopen require, include ou compatibles URL d'accéder directement aux fichiers PHP. L'accès à distance est obtenu grâce à l'utilisation de protocoles HTTP ou FTP, ce qui empêche le système de se défendre contre les vulnérabilités de sécurité par injection de code.
Pour vous assurer que votre système est sûr, sécurisé et éloigné de l'exécution de code à distance, vous pouvez définir cette commande sur « Désactivé », comme indiqué ci-dessous :
Allow_url_fopen=Off
allow_url_include =Off
4. Enregistrez les erreurs PHP.
Un autre moyen simple de renforcer la sécurité de votre application web est de ne pas afficher d'erreurs aux visiteurs. Cela garantira que les pirates ne pourront pas du tout compromettre la sécurité du site Web. Il doit être modifié dans le fichier /etc/php.d/security.ini.
display_errors=Off
Maintenant, vous pensez peut-être : après avoir terminé cette étape, "Comment les développeurs peuvent-ils déboguer sans l'aide de messages d'erreur ?" Il leur suffit de définir la commande log_errors sur "On" dans le fichier security.ini.
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log
5. Contrôler raisonnablement les ressources.
Pour assurer la sécurité de votre application, il est important de contrôler les ressources. Pour garantir une exécution et une sécurité correctes, vous devez restreindre l'exécution des scripts PHP. De plus, il devrait y avoir une limite sur le temps passé à analyser les données de la demande. Si le temps d'exécution est contrôlé, d'autres ressources telles que la mémoire utilisée par le script doivent également être configurées en conséquence. Toutes ces métriques peuvent être gérées en éditant le fichier security.ini.
# défini en secondes
max_execution_time = 25
max_input_time = 25
memory_limit = 30M
6. Désactivez les fonctions PHP dangereuses
PHP est livré avec des fonctions utiles pour le développement, mais il peut également être utilisé par des pirates pour s'introduire dans le Web Un grand nombre de fonctions pour l'application. La désactivation de ces fonctions améliore la sécurité globale et garantit que vous n'êtes pas exposé à des fonctions PHP dangereuses.
Pour ce faire, vous devez d'abord éditer le fichier php.ini. Une fois dans le fichier, recherchez la commande Disable_functions et désactivez les fonctions dangereuses à l'intérieur. Pour ce faire, il vous suffit de copier/coller le code suivant.
disable_functions =exec,passthru,
shell_exec,system,proc_open,popen,curl_exec,
curl_multi_exec,parse_ini_file,show_source
Vous pouvez ici ( https ://www.eukhost.com/blog/webhosting/dangerous-php-functions-must-be-disabled/) Apprenez-en davantage sur la désactivation des fonctions PHP dangereuses.
7. Téléchargez des fichiers.
Si votre application ne nécessite pas de télécharger de fichiers, désactiver la possibilité de télécharger des fichiers peut contribuer à améliorer la sécurité. Si vous souhaitez interdire aux utilisateurs de télécharger des fichiers, il vous suffit de modifier le fichier security.ini dans le répertoire /etc/php.d/ et de définir la commande file_uploads sur OFF.
file_uploads=Off
8. Gardez la version à jour.
Les développeurs travaillent 24h/24 et 7j/7 pour mettre à jour la technologie que vous utilisez. Il en va de même pour PHP. Puisqu’il dispose d’une communauté open source, des correctifs et des correctifs sont publiés régulièrement. La version mise à jour fournit également des correctifs de sécurité pour les vulnérabilités du premier jour et d'autres vulnérabilités de sécurité. Si vous vous souciez de la sécurité des applications, assurez-vous toujours que votre solution PHP est à jour. De plus, l’application des derniers correctifs à d’autres technologies connexes peut garantir une sécurité maximale.
9. Contrôler l'accès au système de fichiers.
Par défaut, PHP peut utiliser des fonctions telles que fopen() pour accéder aux fichiers. L'accès est fourni par la commande open_basedir. Tout d’abord, définissez toujours la commande open_basedir sur le répertoire /var/www/html. Le définir sur n’importe quel autre répertoire peut entraîner des problèmes de sécurité.
open_basedir="/var/www/html/"
10. Contrôler la taille du POST.
Notre dernier point de sécurité PHP est la fonction de contrôle de la taille POST. La fonction HTTP POST utilise le navigateur du client pour envoyer des données au serveur Web. Par exemple, un utilisateur peut télécharger un certificat, qui est ensuite envoyé au navigateur Web pour traitement. Tout fonctionnait bien jusqu'au jour où un pirate informatique tenta d'envoyer un énorme fichier qui épuisa les ressources du serveur. Cela entraînera très probablement un crash du serveur ou une réponse lente. Pour protéger le serveur de cette vulnérabilité, la taille du POST doit être définie. La taille du POST peut être définie dans le fichier /etc/php.d/security.ini.
post_max_size=1k
Conclusion
La sécurité est l'un des problèmes les plus préoccupants pour les développeurs Web et les administrateurs Linux. Si vous prenez les points ci-dessus, vous pourrez renforcer la sécurité de votre environnement de développement et de vos applications web PHP. Si vous pensez que nous avons manqué quelque chose d'important, veuillez laisser un message pour l'ajouter.