Dans le développement d'applications PHP, la fonction php_uname () est une fonction d'acquisition d'informations système couramment utilisée. Il renvoie les informations détaillées du système d'exploitation du serveur, y compris le nom du système d'exploitation, le numéro de version, etc. Cependant, pour des raisons de sécurité, de nombreux développeurs ou administrateurs système choisissent de désactiver la fonction pour réduire le risque d'exposer les informations du serveur. Mais est-il vraiment nécessaire de désactiver php_uname () ? Cet article analysera les risques qui pourraient poser pour désactiver cette fonction et discuter de la façon de faire face à ce problème.
La fonction php_uname () est utilisée pour renvoyer les informations du système d'exploitation du script PHP en cours d'exécution. Grâce à cette fonction, les développeurs peuvent obtenir des informations détaillées sur le système d'exploitation, telles que:
Le nom du système d'exploitation (comme Linux ou Windows)
Numéro de version du système d'exploitation
Informations sur la version du système d'exploitation
Exemple de code:
<?php
echo php_uname();
?>
La sortie de ce code est similaire à:
Linux myserver 4.15.0-135-generic #139-Ubuntu SMP Wed Apr 8 12:14:16 UTC 2020 x86_64
Étant donné que php_uname () expose les détails du système d'exploitation, cela peut fournir des indices aux attaquants. Un attaquant peut utiliser ces informations pour choisir la vulnérabilité ou la méthode d'attaque appropriée. Par exemple, si un attaquant sait que le système est un système d'exploitation Linux et connaît son numéro de version spécifique, il peut essayer d'exploiter les vulnérabilités connues de cette version.
Par conséquent, de nombreux administrateurs et développeurs système estiment que la désactivation de PHP_UNAME () est un moyen efficace d'améliorer la sécurité du serveur. En désactivant cette fonction, la possibilité pour les attaquants externes d'obtenir des informations système peut être réduit dans une certaine mesure.
Cependant, la désactivation de php_uname () n'est pas sans risques. Voici quelques risques et impacts potentiels:
php_uname () fournit des informations importantes sur le système, en particulier lors du débogage et du dépannage. Si cette fonction est désactivée, le développeur perdra certains des outils qui peuvent aider à identifier les problèmes du système. Par exemple, dans certains cas, les développeurs peuvent avoir besoin de comprendre rapidement les informations du système d'exploitation du serveur afin de déboguer pour un environnement spécifique.
De nombreuses bibliothèques ou outils tiers PHP reposent sur PHP_UNAME () pour obtenir des informations système pour l'optimisation ou l'ajustement. Par exemple, certaines extensions de PHP peuvent devoir s'appuyer sur le type de système pour sélectionner la configuration appropriée. Si php_uname () est désactivé, ces outils peuvent ne pas fonctionner correctement, affectant le fonctionnement normal de l'application.
La désactivation de PHP_UNAME () ne peut éviter que l'acquisition externe d'informations sur le système d'exploitation, mais elle n'empêche pas fondamentalement les attaquants d'obtenir d'autres informations système. Par exemple, un attaquant peut toujours obtenir des informations sur le serveur via d'autres canaux (comme l'affichage de l'en-tête de réponse HTTP du serveur, des fichiers journaux, etc.). Par conséquent, il n'est pas réaliste de s'appuyer sur la désactivation de php_uname () pour assurer la sécurité du système.
Si vous décidez de désactiver php_uname () , vous pouvez prendre certaines étapes pour atténuer les risques qu'elle apporte et vous assurer que l'application fonctionne correctement. Voici quelques stratégies réalisables:
PHP_UNAME () peut être désactivé en modifiant le fichier de configuration PHP.ini de PHP. Ajoutez la configuration suivante dans php.ini :
disable_functions = php_uname
Cela désactive l'utilisation de la fonction php_uname () , empêchant ainsi l'accès externe.
Si votre application s'appuie sur php_uname () pour obtenir des informations sur le système d'exploitation, envisagez de fournir une alternative sûre. Par exemple, les développeurs peuvent configurer manuellement le type de système d'exploitation en fonction des besoins de l'entreprise et le stocker en variables d'environnement au lieu de compter sur php_uname () .
La simple désactivation de php_uname () n'est pas suffisante pour assurer la sécurité complète du système. Il est recommandé de coopérer avec d'autres mesures de sécurité, telles que:
Désactiver d'autres fonctions PHP inutiles (telles que Exec () , shell_exec () , etc.)
Utilisez un pare-feu d'application Web (WAF) pour détecter et prévenir les demandes malveillantes
Mettre à jour régulièrement les correctifs de sécurité pour le système et les applications
Renforcer la configuration du serveur pour garantir que seuls les utilisateurs autorisés peuvent accéder aux informations sensibles
Pour améliorer la sécurité globale du serveur, la technologie de virtualisation, les déploiements conteneurisés (tels que Docker) ou les fonctionnalités de protection de sécurité des fournisseurs de services cloud peuvent être utilisés. De cette façon, même si l'attaquant obtient certaines informations, il est difficile de nuire davantage à l'ensemble du système.
La désactivation de PHP_UNAME () réduit le risque d'exposer les informations du système d'exploitation, mais elle ne résout pas tous les problèmes de sécurité seuls. Lorsque vous envisagez de désactiver cette fonction, les développeurs devraient peser les risques et les impacts potentiels qu'il apporte et adopter des stratégies de réponse appropriées. Plus important encore, la désactivation de php_uname () devrait être utilisée avec d'autres mesures de sécurité pour garantir la sécurité globale du système.