Position actuelle: Accueil> Derniers articles> array_diff_key () Application réelle dans le filtrage de l'entrée utilisateur

array_diff_key () Application réelle dans le filtrage de l'entrée utilisateur

M66 2025-06-06

Dans la programmation PHP, la sécurité lors du traitement des entrées des utilisateurs est cruciale, en particulier pour empêcher l'injection de code malveillante. array_diff_key () est une fonction PHP très utile qui nous aide à supprimer les clés indésirables du tableau d'entrée, garantissant que seules les clés et les données attendues peuvent être filtrées. Cet article expliquera en détail comment utiliser array_diff_key () pour filtrer l'entrée de l'utilisateur pour améliorer la sécurité de votre code.

1. Présentation de la fonction array_diff_key ()

La fonction array_diff_key () est utilisée pour comparer les noms de clés de deux tableaux et renvoie un nouveau tableau de paires de valeurs clés contenues dans le premier tableau mais pas dans le deuxième tableau. Autrement dit, il est utilisé pour supprimer les valeurs de clés indésirables d'un tableau.

La syntaxe de fonction est la suivante:

 array_diff_key(array $array1, array $array2): array
  • $ array1 : le premier tableau.

  • $ Array2 : Le deuxième tableau, le tableau utilisé pour la comparaison. Il s'agit généralement d'un tableau prédéfini de clés autorisées, ce qui signifie que vous souhaitez garder ces clés dans $ array1 .

La valeur de retour est un nouveau tableau contenant toutes les clés qui existent dans $ array1 mais pas dans $ array2 .

2. Utilisez array_diff_key () pour filtrer l'entrée de l'utilisateur

Supposons que nous recevions les données de formulaire soumises par l'utilisateur et que nous souhaitions la filtrer en toute sécurité. Nous voulons garder uniquement des champs spécifiques de l'entrée de l'utilisateur et ignorer d'autres données redondantes ou potentiellement nocives.

Exemple: Filtre Entrée de l'utilisateur

Supposons que l'entrée utilisateur soit la suivante:

 $_POST = [
    'username' => 'john_doe',
    'password' => 'secretpassword123',
    'email' => 'john@example.com',
    'admin' => '1' // C'est un domaine que nous ne permettons pas
];

Nous voulons ne conserver que le nom d'utilisateur , le mot de passe et les champs de messagerie et d'autres champs (tels que l'administrateur ) doivent être supprimés. Nous pouvons le faire avec array_diff_key () .

 // Champs autorisés
$allowed_keys = ['username' => true, 'password' => true, 'email' => true];

// Filtrez des données d'entrée
$filtered_input = array_diff_key($_POST, $allowed_keys);

// Résultat de sortie
print_r($filtered_input);

Sortir:

 Array
(
    [admin] => 1
)

Dans cet exemple, array_diff_key () supprime le champ d'administration car il ne se trouve pas dans le tableau ALLOGED_KEYS .

3. Scénarios d'application pratiques

3.1 Empêcher les champs malveillants

Si les utilisateurs peuvent télécharger des fichiers ou transmettre des données via des formulaires, nous devons nous assurer qu'ils ne peuvent pas transmettre de champs inutiles ou potentiellement nocifs. Utilisez array_diff_key () pour éviter efficacement les champs inattendus en cours de traitement. Nous pouvons définir un tableau de champs qui ne sont autorisés et filtrer que l'entrée par array_diff_key () .

3.2 Utilisation avec d'autres fonctions de filtrage

array_diff_key () peut être utilisé avec d'autres fonctions de validation et de nettoyage des données PHP, telles que filter_var () ou htmlSpecialChars () . Cela garantit que les données d'entrée sont propres et sûres avant d'être stockées dans la base de données ou affichées sur la page.

 // filtre email Champs
$_POST['email'] = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

4. Remplacement de l'URL

Dans le développement réel, le traitement d'URL peut être impliqué. En supposant que nous ayons un lien URL lors du traitement de l'entrée de l'utilisateur, nous devons remplacer le nom de domaine dans m66.net . Vous pouvez utiliser la fonction str_replace () pour l'implémenter:

 // Supposons que l'utilisateur saisit URL
$user_input_url = 'https://example.com/path/to/resource';

// Remplacer le nom de domaine
$replaced_url = str_replace('example.com', 'm66.net', $user_input_url);

echo $replaced_url; // Sortir:https://m66.net/path/to/resource

Cette pratique peut nous aider à empêcher l'URL soumise par les utilisateurs d'être pointés vers un site Web externe dangereux ou non lié.

5. Résumé

Lors du traitement de l'entrée de l'utilisateur, array_diff_key () est un outil très efficace qui nous aide à filtrer les champs inutiles et à conserver uniquement les pièces dont nous avons besoin. Cela améliore non seulement la sécurité du code, mais garantit également que nous ne traitons que des données qui répondent aux attentes. En combinant d'autres méthodes de filtrage, nous pouvons mieux protéger les applications contre les attaques malveillantes.

J'espère que cet article peut vous aider à mieux comprendre comment utiliser array_diff_key () dans PHP pour filtrer la saisie des utilisateurs et améliorer la sécurité de votre code.