Position actuelle: Accueil> Derniers articles> Construisez dynamiquement une liste blanche constante pour la vérification de la configuration

Construisez dynamiquement une liste blanche constante pour la vérification de la configuration

M66 2025-05-17

Dans le développement de PHP, nous utilisons généralement des constantes pour enregistrer certains paramètres de configuration globale ou des informations système. Dans certains scénarios, nous espérons pouvoir contrôler dynamiquement quelles constantes sont valides via des fichiers de configuration ou des méthodes externes. Pour y parvenir, nous pouvons utiliser la fonction GET_DEFINE_CONSTANTS intégrée de PHP pour obtenir toutes les constantes actuellement définies et construire dynamiquement une liste blanche constante pour effectuer une vérification de configuration pour garantir que seules les constantes légales sont utilisées dans le programme.

1. Quelle est la fonction get_defined_constants ?

get_defined_constants est une fonction intégrée en PHP qui prend toutes les constantes définies dans le script actuel et renvoie des paires de valeurs clés de noms constants et de valeurs constantes sous forme de tableaux. Le prototype de cette fonction est le suivant:

 array get_defined_constants (bool $categorize = false)

La catégorie des paramètres détermine s'il faut retourner les constantes par catégorie. Par défaut, il renvoie un tableau contenant toutes les constantes. S'il est défini sur true , les constantes sont classées par des catégories (telles que les constantes de système, les constantes d'extension, etc.).

2. Utilisez get_defined_constants pour obtenir la constante actuellement définie

Lorsque nous effectuons une vérification de liste blanche constante, nous devons d'abord obtenir toutes les constantes définies dans le script actuel. En appelant la fonction get_defined_constants () , nous pouvons facilement obtenir ces informations, la filtrer et la vérifier.

 $defined_constants = get_defined_constants(true);
print_r($defined_constants);

La sortie affichera toutes les constantes définies, ainsi que leurs valeurs. Pour le moment, nous pouvons filtrer les constantes définies par système et les constantes personnalisées en fonction de nos besoins.

3. Construisez une liste blanche constante

Pour nous assurer que seuls les constantes autorisées sont utilisées, nous pouvons limiter l'utilisation des constantes en construisant une "liste blanche constante". Une liste blanche constante est un tableau contenant des noms constants juridiques.

 $whitelist = ['MY_APP_DEBUG', 'MY_APP_ENV', 'MY_APP_VERSION'];

Ce tableau contient les noms constants que nous permettons. Ensuite, nous pouvons itérer sur les constantes actuellement définies et vérifier si elles sont dans notre liste blanche.

4. Vérifiez dynamiquement si la constante est sur la liste blanche

Grâce à une vérification dynamique, nous pouvons nous assurer que seules les constantes autorisées de la liste blanche sont utilisées dans le programme. La méthode de mise en œuvre spécifique est la suivante:

 $defined_constants = get_defined_constants(true);
$whitelist = ['MY_APP_DEBUG', 'MY_APP_ENV', 'MY_APP_VERSION'];

foreach ($defined_constants['user'] as $constant => $value) {
    if (!in_array($constant, $whitelist)) {
        echo "avertir: constante '$constant' Non défini dans la liste blanche!\n";
    } else {
        echo "constante '$constant' Autorisé à utiliser,La valeur est: $value\n";
    }
}

Dans ce code, nous obtenons d'abord toutes les constantes définies par l'utilisateur dans le script actuel ( get_defined_constants (true) ), puis utilisons la fonction in_array pour déterminer si chaque constante est dans la liste blanche. Si la constante n'est pas dans la liste blanche, nous publions un message d'avertissement.

5. Scénarios d'application pratiques

5.1 Vérification constante des fichiers de configuration

Supposons que nous ayons un fichier de configuration qui contient de nombreuses constantes qui doivent être utilisées dans l'application. Dans les environnements de production, nous voulons nous assurer que seules les constantes prédéfinies peuvent être utilisées, évitant ainsi les risques de sécurité possibles.

Par exemple, nous devrons peut-être définir certaines constantes telles que les informations de débogage, les paramètres d'environnement, etc. dans notre application:

 define('MY_APP_DEBUG', true);
define('MY_APP_ENV', 'production');
define('MY_APP_VERSION', '1.0.0');

Nous les comparons ensuite aux constantes de la liste blanche pour nous assurer que ces constantes sont légales et évitent une mauvaise utilisation ou une mauvaise modification.

5.2 Activer et désactiver les constantes de contrôle dynamique

Dans certains scénarios, il peut être souhaitable d'activer ou de désactiver certaines constantes via une configuration dynamique. Par exemple, certaines constantes ne peuvent être activées que dans le mode de développement et désactivées dans les environnements de production. Grâce au mécanisme de liste blanche constante, nous pouvons facilement contrôler les constantes disponibles dans un environnement spécifique.

 if (MY_APP_ENV === 'development') {
    define('MY_APP_DEBUG', true);
} else {
    define('MY_APP_DEBUG', false);
}

À l'heure actuelle, nous pouvons construire dynamiquement la liste blanche constante en fonction de l'environnement et effectuer une vérification de configuration correspondante pour garantir que seules les constantes appropriées prennent effet dans l'environnement approprié.

6. Résumé

Grâce à la fonction GET_DEFINED_CONSTANTS de PHP, nous pouvons facilement obtenir toutes les constantes définies dans le script actuel et utiliser le mécanisme de liste blanche pour effectuer une vérification dynamique. Une liste blanche constante peut nous aider à limiter uniquement les constantes prédéfinies, améliorant ainsi la sécurité des applications et évitant les erreurs de configuration inutiles ou les risques de sécurité.

Nous pouvons appliquer de manière flexible les listes blanches constantes pour la vérification de la configuration en combinaison avec la configuration environnementale, le contrôle dynamique et d'autres moyens pour assurer la stabilité et la sécurité du programme.