Filtres PHP
Les filtres PHP sont utilisés pour valider et filtrer les données provenant de sources non sécurisées, telles que les saisies utilisateur.
Qu'est-ce qu'un filtre PHP ?
Les filtres PHP sont utilisés pour valider et filtrer les données provenant de sources non sécurisées.
Tester, valider et filtrer les entrées utilisateur ou les données personnalisées est une partie importante de toute application web.
L'extension de filtre de PHP est conçue pour rendre le filtrage des données plus facile et plus rapide.
Pourquoi utiliser des filtres ?
Presque toutes les applications web dépendent d'entrées externes. Ces données proviennent généralement d'utilisateurs ou d'autres applications (telles que des services web). En utilisant des filtres, vous pouvez vous assurer que votre application reçoit le bon type d'entrée.
Vous devez toujours filtrer les données externes !
Le filtrage des entrées est l'un des sujets les plus importants en matière de sécurité des applications.
Qu'est-ce que les données externes ?
- Données d'entrée provenant de formulaires
- Cookies
- Données des services Web
- Variables serveur
- Résultats des requêtes de base de données
Fonctions et filtres
Pour filtrer une variable, utilisez l'une des fonctions de filtre suivantes :
- filter_var() - Filtre une seule variable avec un filtre spécifié
- filter_var_array() - Filtre plusieurs variables avec des filtres identiques ou différents
- filter_input - Récupère une variable d'entrée et la filtre
- filter_input_array - Récupère plusieurs variables d'entrée et les filtre avec des filtres identiques ou différents
Dans l'exemple ci-dessous, nous avons utilisé la fonction filter_var() pour valider un entier :
Exemple
Le code ci-dessus utilise le filtre "FILTER_VALIDATE_INT" pour filtrer la variable. Comme l'entier est valide, le code ci-dessus affichera :

Si nous essayons d'utiliser une variable non entière (comme "123abc"), il affichera : "L'entier n'est pas valide".
Pour une liste complète des fonctions et des filtres, consultez notreManuel de référence des filtres PHP。
Validation et assainissement
Il existe deux types de filtres :
Filtres de validation :
- Utilisés pour valider les entrées utilisateur
- Règles de format strictes (telles que la validation d'URL ou d'e-mail)
- Retourne le type attendu en cas de succès, ou FALSE en cas d'échec
Filtres de nettoyage :
- Utilisé pour autoriser ou interdire des caractères spécifiés dans une chaîne
- Aucune règle de format de données
- Retourne toujours une chaîne
Options et drapeaux
Les options et les drapeaux sont utilisés pour ajouter des options de filtrage supplémentaires à un filtre spécifié.
Les différents filtres ont des options et des drapeaux différents.
Dans l'exemple ci-dessous, nous avons utilisé filter_var() avec les options "min_range" et "max_range" pour valider un entier :
Exemple
Tout comme le code ci-dessus, les options doivent être placées dans un tableau associatif nommé "options". Si un drapeau est utilisé, il n'a pas besoin d'être à l'intérieur du tableau.
Comme l'entier est "300", qui n'est pas dans la plage spécifiée, la sortie du code ci-dessus sera :
Not a valid integer
Pour une liste complète des fonctions et filtres, consultez notreManuel de référence des filtres PHPVous pouvez voir les options et drapeaux disponibles pour chaque filtre.
Valider les entrées
Essayons de valider les données d'entrée d'un formulaire.
La première chose que nous devons faire est de vérifier si les données d'entrée que nous recherchons existent.
Ensuite, nous filtrons les données d'entrée à l'aide de la fonction filter_input().
Dans l'exemple ci-dessous, la variable d'entrée "email" est transmise à la page PHP :
Exemple
Le résultat du test de l'exemple ci-dessus est le suivant :

Explication de l'exemple
L'exemple ci-dessus a une variable d'entrée (email) envoyée via la méthode "GET" :
- Vérifier si une variable d'entrée "email" de type "GET" existe
- Si la variable d'entrée existe, vérifier s'il s'agit d'une adresse e-mail valide
Assainir l'entrée
Essayons d'assainir une URL envoyée depuis un formulaire.
Tout d'abord, nous devons confirmer si les données d'entrée que nous recherchons existent.
Ensuite, nous utilisons la fonction filter_input() pour assainir les données d'entrée.
Dans l'exemple ci-dessous, la variable d'entrée "url" est transmise à la page PHP :
<?php
if(!filter_has_var(INPUT_GET, "url"))
{
echo("没有 url 参数");
}
else
{
$url = filter_input(INPUT_GET,
"url", FILTER_SANITIZE_URL);
echo $url;
}
?>
Explication de l'exemple
L'exemple ci-dessus comporte une variable d'entrée (url) envoyée via la méthode "GET" :
- Vérifiez si une variable d'entrée "url" de type "GET" existe
- Si cette variable d'entrée existe, assainissez-la (supprimez les caractères illégaux) et stockez-la dans la variable $url
Si la variable d'entrée est une chaîne comme ceci : "http://www.ruåånoøøob.com/", alors la variable $url assainie ressemblera à ceci :
Filtrer plusieurs entrées
Les formulaires se composent généralement de plusieurs champs de saisie. Pour éviter d'appeler à plusieurs reprises les fonctions filter_var ou filter_input, nous pouvons utiliser filter_var_array ou la fonction filter_input_array.
Dans cet exemple, nous utilisons la fonction filter_input_array() pour filtrer trois variables GET. Les variables GET reçues sont un nom, un âge et une adresse e-mail :
Exemple
Explication de l'exemple
L'exemple ci-dessus comporte trois variables d'entrée (name, age et email) envoyées via la méthode "GET" :
- Créez un tableau qui contient les noms des variables d'entrée et les filtres utilisés pour les variables d'entrée spécifiées
- Appelez la fonction filter_input_array() avec les variables d'entrée GET et le tableau qui vient d'être créé comme paramètres
- Vérifiez si les variables "age" et "email" dans la variable $result contiennent une entrée illégale. (Si une entrée illégale existe, les variables d'entrée deviennent FALSE après avoir utilisé la fonction filter_input_array().)
Le deuxième paramètre de la fonction filter_input_array() peut être un tableau ou l'ID d'un seul filtre.
Si le paramètre est l'ID d'un seul filtre, alors ce filtre spécifié filtre toutes les valeurs du tableau d'entrée.
Si le paramètre est un tableau, alors ce tableau doit suivre les règles ci-dessous :
- Il doit être un tableau associatif, dans lequel les variables d'entrée qu'il contient sont les clés du tableau (par exemple, la variable d'entrée "age")
- Les valeurs de ce tableau doivent être des ID de filtre, ou un tableau qui spécifie des filtres, des drapeaux et des options.
Utilisation du rappel de filtre
En utilisant le filtre FILTER_CALLBACK, vous pouvez appeler une fonction personnalisée et l'utiliser comme filtre. Cela vous donne un contrôle total sur le filtrage des données.
Vous pouvez créer vos propres fonctions personnalisées, ou vous pouvez utiliser des fonctions PHP existantes.
Spécifiez la fonction que vous avez l'intention d'utiliser comme filtre selon la méthode spécifiée par les options. Dans le tableau associatif, utilisez le nom "options".
Dans l'exemple ci-dessous, nous utilisons une fonction personnalisée pour convertir tous les "_" en "." :
Exemple
Le résultat du code ci-dessus est affiché ci-dessous :

Explication de l'exemple
L'exemple ci-dessus convertit tous les "_" en "." :
- Créez une fonction qui remplace "_" par "."
- Appelez la fonction filter_var() avec le filtre FILTER_CALLBACK et un tableau contenant notre fonction