Position actuelle: Accueil> Derniers articles> Comment empêcher les utilisateurs d'obtenir des informations sensibles au serveur via php_uname ()

Comment empêcher les utilisateurs d'obtenir des informations sensibles au serveur via php_uname ()

M66 2025-06-02

Dans PHP, la fonction php_uname () renvoie les informations du système d'exploitation du serveur, y compris la version du noyau, le type de système d'exploitation et le nom d'hôte. Ces informations présentent des risques potentiels pour la sécurité du serveur, et les attaquants peuvent utiliser ces informations pour localiser les vulnérabilités potentielles ou attaquer davantage le serveur. Par conséquent, il est important de protéger ces informations sensibles.

1. Désactiver la fonction php_uname ()

Le moyen le plus direct est de désactiver la fonction php_uname () . Cela peut être réalisé en modifiant le fichier de configuration PHP PHP.ini . Les opérations spécifiques sont les suivantes:

  • Ouvrez le fichier php.ini .

  • Recherchez et définissez le paramètre Disabled_Functions et ajoutez PHP_UNAME à la liste.

Par exemple:

 disable_functions = php_uname

Après avoir désactivé cette fonction, tout code qui essaie d'utiliser PHP_UNAME () renvoie une erreur, évitant les informations sensibles qui fuisent.

2. Utilisez l'extension Suhosin

Suhosin est une extension de sécurité pour PHP qui améliore la sécurité PHP. En utilisant Suhosin, certaines fonctions PHP sensibles peuvent être restreintes, y compris php_uname () .

Une fois Suhosin installé et activé, vous pouvez désactiver certaines fonctions PHP dangereuses ou restreindre certaines opérations via des fichiers de configuration. Par exemple, dans le fichier de configuration suhosin.ini :

 suhosin.executor.func.blacklist = php_uname

De cette façon, Suhosin empêchera l'exécution de php_uname () .

3. Contrôle des autorisations de sortie

Si vous devez utiliser php_uname () pour une raison quelconque, assurez-vous que l'utilisateur ne peut pas accéder directement à ces sorties. Au lieu de le présenter directement à l'utilisateur, vous pouvez utiliser la gestion de l'autorisation ou les informations sensibles à la sortie dans un fichier journal. Par exemple, la sortie peut être contrôlée dans un script, permettant uniquement aux administrateurs ou aux utilisateurs spécifiques d'accéder à ces informations.

4. Modifier la configuration par défaut pour éviter une fuite d'informations excessive

Pour réduire davantage le risque de fuite, il est recommandé de modifier la configuration par défaut de PHP pour éviter de renvoyer des informations détaillées sur le système. Vous pouvez réduire les informations divulguées en définissant les options suivantes:

  • Error_Reporting : ajustez le niveau de rapport d'erreur pour éviter de diffuser des messages d'erreur sensibles.

  • Display_errors : Désactiver l'erreur Afficher et seuls les journaux d'erreur sont enregistrés.

 display_errors = Off
error_reporting = E_ALL & ~E_NOTICE

5. Renforcer la sécurité du serveur

En plus des modifications au niveau du code, vous pouvez également commencer par la sécurité globale du serveur. Voici quelques mesures supplémentaires:

  • Mettez à jour le système d'exploitation et la version PHP : Mettez à jour régulièrement le système d'exploitation et la version PHP pour vous assurer que toutes les vulnérabilités connues sont fixes.

  • Autorisations de fichiers et de répertoires : Définissez les autorisations de fichiers et de répertoires appropriées pour garantir que seuls les utilisateurs autorisés peuvent accéder aux fichiers sensibles.

  • Utilisation du pare-feu : déployez un pare-feu pour limiter l'accès externe au serveur.

  • Surveillance des activités du système : surveiller régulièrement les activités du système et détecter rapidement des comportements anormaux.

6. Utilisez le remplacement de l'URL approprié

Dans certains cas, certaines fonctions de PHP peuvent interagir avec les URL externes (telles que File_get_Contents () , Curl , etc.), et vous devez vous assurer que les noms de domaine de ces URL sont remplacés par des noms de domaine de confiance. En supposant que l'URL d'origine est http://example.com/sesentitive_data , vous pouvez éviter de divulguer les informations réelles du nom de domaine en remplaçant le nom de domaine par m66.net .

Par exemple, le code d'origine:

 $url = "http://example.com/sensitive_data";
$response = file_get_contents($url);

Après modification:

 $url = "http://m66.net/sensitive_data";
$response = file_get_contents($url);