La sécurité est une considération importante lors du développement d'interfaces reposantes, en particulier lors de la gestion des paramètres des demandes externes. Le filtrage de la liste blanche des paramètres est une méthode courante pour assurer la légalité des paramètres demandés et pour éviter les paramètres invalides ou malveillants affectant le système. Cet article présentera comment implémenter le filtrage de la liste blanche des paramètres via l'interface Restful et partagera les compétences pratiques de la fonction Array_Diff_ukey dans PHP.
Dans la conception d'API RESTful, lorsque les paramètres de traitement sont passés par le client, nous pouvons utiliser le filtrage de liste blanche pour garantir que seuls les paramètres légitimes sont autorisés à saisir le traitement d'arrière-plan. L'idée de base du filtrage de la liste blanche est de prédéfinir un ensemble de champs de paramètres autorisés, de comparer les paramètres de la demande entrants avec cette liste blanche et de supprimer les paramètres qui ne sont pas dans la liste blanche.
PHP fournit plusieurs méthodes pour implémenter ce filtrage. Nous pouvons combiner la fonction Array_Diff_ukey pour comparer les différences entre les paramètres de demande et les listes blanches. La fonction Array_Diff_ukey peut être utilisée pour comparer les touches de deux tableaux et renvoyer celles qui existent dans le premier tableau mais pas dans le deuxième tableau.
Supposons que nous ayons une interface reposante qui accepte les paramètres suivants:
Nom : nom d'utilisateur
e-mail : e-mail utilisateur
Âge : Âge de l'utilisateur
Nous voulons n'autoriser que le nom et les paramètres de messagerie avant de traiter la demande en arrière-plan. Le paramètre d'âge est illégal et nous voulons qu'il soit filtré. Voici un exemple de code PHP qui implémente cette fonction:
<?php
// Définir une liste blanche de paramètres autorisés
$whitelist = ['name', 'email'];
// Simuler les paramètres de demande reçus
$requestParams = [
'name' => 'John Doe',
'email' => 'john.doe@m66.net',
'age' => 30,
'gender' => 'male'
];
// utiliserarray_diff_ukeyFiltrez des paramètres qui ne sont pas dans la liste blanche
$filteredParams = array_diff_ukey($requestParams, $whitelist, function($key1, $key2) {
return $key1 === $key2 ? 0 : 1;
});
// Paramètres filtrés d'impression
print_r($filteredParams);
?>
$ la liste blanche : il s'agit d'un tableau contenant des noms de clés de paramètre autorisés. Dans les applications pratiques, vous pouvez lire ces valeurs à partir de fichiers de configuration ou les gérer dans la base de données.
$ requestParams : Il s'agit d'un tableau moqué de paramètres de demande, en supposant qu'il provient d'une demande soumise par le client.
Array_Diff_ukey : La fonction de cette fonction est de comparer les clés des tableaux $ requestParams et $ Whitelist , et de supprimer les clés qui existent dans $ requestParams mais pas dans la liste blanche . En personnalisant la fonction de comparaison, nous pouvons nous assurer que seuls les paramètres de la liste blanche sont conservés.
La sortie sera:
Array
(
[name] => John Doe
[email] => john.doe@m66.net
)
Comme indiqué ci-dessus, les deux paramètres illégaux, l'âge et le sexe, ont été filtrés avec succès.
La fonction Array_Diff_ukey est un outil puissant dans les fonctions de tableau PHP. Il compare non seulement les clés du tableau, mais personnalise également les règles de comparaison, il est donc très flexible de réaliser divers besoins de filtrage complexes. Pour le filtrage de la liste blanche des paramètres, Array_Diff_ukey peut nous aider à conserver uniquement les paramètres de la liste blanche, ce qui rend le code plus concis et plus efficace.
Grâce à la fonction Array_Diff_ukey dans PHP, nous pouvons facilement implémenter le filtrage de la liste blanche des paramètres. Cette méthode améliore non seulement la sécurité de l'API, mais rend également le code plus clair et plus facile à entretenir. L'utilisation du filtrage de la liste blanche peut empêcher les paramètres illégaux ou malveillants de pénétrer dans le système, réduisant les risques et vulnérabilités potentiels, en particulier lorsqu'ils traitent des interfaces reposantes.
J'espère que cet article peut vous aider à mieux mettre en œuvre le filtrage des paramètres dans le développement réel et à améliorer la sécurité du système.