Les filtres PHP sont utilisés pour valider et filtrer les données provenant de sources non sécurisées, telles que les entrées utilisateur.
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 sont des éléments importants de toute application Web.
Les extensions de filtre PHP sont conçues pour rendre le filtrage des données plus facile et plus rapide.
Presque toutes les applications Web reposent sur une entrée externe. Ces données proviennent généralement des utilisateurs ou d'autres applications (telles que des services Web). En utilisant des filtres, vous pouvez vous assurer que votre application obtient le type d'entrée correct.
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.
Que sont les données externes ?
Saisir les données du formulaire
Cookies
Données de services Web
variables du serveur
Résultats de la requête de base de données
Pour filtrer les variables, utilisez l'une des fonctions de filtre suivantes :
filter_var() - filtre une seule variable via un filtre spécifié
filter_var_array() - filtre plusieurs variables avec des filtres identiques ou différents
filter_input - prend une variable d'entrée et la filtre
filter_input_array - prend plusieurs variables d'entrée et les filtre à travers des filtres identiques ou différents
Dans l'exemple suivant, nous validons un entier à l'aide de la fonction filter_var() :
<?php $int = 123 ; si ( ! filter_var ( $int , FILTER_VALIDATE_INT ) ) { echo ( " Ce n'est pas un entier légal " ) ; autre { echo ( " est un entier légal " ) ; ?>
Le code ci-dessus utilise le filtre "FILTER_VALIDATE_INT" pour filtrer les variables.
Si nous essayons d'utiliser une variable non entière (telle que "123abc"), le résultat sera : "L'entier n'est pas valide".
Pour une liste complète des fonctions et des filtres, visitez notre manuel de référence des filtres PHP.
Il existe deux types de filtres :
Filtre de validation :
Utilisé pour valider la saisie de l'utilisateur
Règles de formatage strictes (telles que la validation d'URL ou d'e-mail)
Renvoie le type attendu en cas de succès ou FALSE en cas d'échec
Filtre désinfectant :
Utilisé pour autoriser ou interdire les caractères spécifiés dans une chaîne
Aucune règle de format de données
renvoie toujours une chaîne
Les options et les indicateurs sont utilisés pour ajouter des options de filtrage supplémentaires au filtre spécifié.
Différents filtres ont différentes options et indicateurs.
Dans l'exemple suivant, nous validons un entier en utilisant filter_var() avec les options "min_range" et "max_range" :
<?php $var = 300 ; $int_options = tableau ( " options " => tableau ( " plage_min " => 0 , " plage_max " => 256 ) ) ; si ( ! filter_var ( $var , FILTER_VALIDATE_INT , $int_options ) ) { echo ( " Ce n'est pas un entier légal " ) ; autre { echo ( " est un entier légal " ) ; ?>
Tout comme le code ci-dessus, les options doivent être placées dans un tableau associé appelé « options ». Si vous utilisez des indicateurs, ils n'ont pas besoin d'être dans un tableau.
Puisque l'entier est "300", ce qui n'est pas dans la plage spécifiée, le résultat du code ci-dessus sera :
n'est pas un entier légal
Pour une liste complète des fonctions et des filtres, visitez notre manuel de référence des filtres PHP. Vous pouvez voir les options et les indicateurs disponibles pour chaque filtre.
Essayons de valider la saisie du formulaire.
La première chose que nous devons faire est de confirmer que les données d’entrée que nous recherchons existent.
Ensuite, nous utilisons la fonction filter_input() pour filtrer les données d'entrée.
Dans l'exemple suivant, la variable d'entrée « email » est passée à la page PHP :
<?php if ( ! filter_has_var ( INPUT_GET , " email " ) ) { echo ( " Aucun paramètre de courrier électronique " ) ; autre { si ( ! filter_input ( INPUT_GET , " email " , FILTER_VALIDATE_EMAIL ) ) { écho " E-mail non valide " ; autre { écho " C'est un e-mail légitime " ; } } ?>
L'exemple ci-dessus a une variable d'entrée (email) passée via la méthode "GET":
Vérifiez s'il existe une variable d'entrée "email" de type "GET"
Si la variable d'entrée existe, vérifiez s'il s'agit d'une adresse e-mail valide
Essayons de nettoyer l'URL transmise depuis le formulaire.
Tout d’abord, nous voulons confirmer que les données d’entrée que nous recherchons existent.
Ensuite, nous utilisons la fonction filter_input() pour purifier les données d'entrée.
Dans l'exemple suivant, la variable d'entrée « url » est passée à la page PHP :
<?phpif(!filter_has_var(INPUT_GET, "url")){ echo("Aucun paramètre d'url");}else{ $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url;}?>
L'exemple ci-dessus a une variable d'entrée (url) passée via la méthode "GET":
Vérifiez s'il existe une variable d'entrée "url" de type "GET"
Si cette variable d'entrée existe, nettoyez-la (supprimez les caractères illégaux) et stockez-la dans la variable $url
Si la variable d'entrée est une chaîne similaire à celle-ci : "http://www.ruåånoøøob.com/", la variable $url nettoyée ressemblera à ceci :
Les formulaires se composent généralement de plusieurs champs de saisie. Pour éviter les appels répétés à la fonction 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 :
<?php $filtres = tableau ( " nom " => tableau ( " filtre " => FILTER_SANITIZE_STRING ) , " âge " => tableau ( " filtre " => FILTER_VALIDATE_INT , " options " => tableau ( " plage_min " => 1 , " plage_max " => 120 ) ) , " e-mail " => FILTER_VALIDATE_EMAIL ) ; $result = filter_input_array ( INPUT_GET , $filters ) si ; ( ! $result [ " âge " ] ) { echo ( " L'âge doit être compris entre 1 et 120. <br> " ) ; elseif ( ! $result [ " email " ] ) { echo ( " L'e-mail est illégal <br> " ) ; autre { echo ( " Entrée correcte " ) ; ?>
L'exemple ci-dessus comporte trois variables d'entrée (nom, âge et email) transmises via la méthode « GET » :
Définit un tableau contenant les noms des variables d'entrée et des filtres pour les variables d'entrée spécifiées
Appelez la fonction filter_input_array(), les paramètres incluent la variable d'entrée GET et le tableau que vous venez de définir
Vérifiez si les variables « age » et « email » dans la variable $result ont une entrée illégale. (S'il y a une entrée illégale, la variable d'entrée est FALSE après avoir utilisé la fonction filter_input_array().)
Le deuxième argument de la fonction filter_input_array() peut être un tableau ou l'ID d'un seul filtre.
Si ce paramètre est l'ID d'un seul filtre, alors le filtre spécifié filtrera toutes les valeurs du tableau d'entrée.
Si le paramètre est un tableau, le tableau doit suivre les règles suivantes :
Doit être un tableau associatif contenant des variables d'entrée qui sont les clés du tableau (comme la variable d'entrée "age")
La valeur de ce tableau doit être l'ID du filtre ou un tableau spécifiant le filtre, les indicateurs et les options
En utilisant le filtre FILTER_CALLBACK, vous pouvez appeler une fonction personnalisée et l'utiliser comme filtre. De cette façon, nous avons un contrôle total sur le filtrage des données.
Vous pouvez créer votre propre fonction personnalisée ou utiliser une fonction PHP existante.
Spécifiez la fonction de filtre que vous souhaitez utiliser de la même manière que l'option spécifiée. Dans un tableau associatif, portant le nom "options".
Dans l'exemple suivant, nous utilisons une fonction personnalisée pour convertir tous les "_" en "." :
<?php fonction convertirEspace ( $string ) { retour str_replace ( " _ " , " . " , $ string ) ; $string = " www_codercto_com ! " ; filter_var ( $string , FILTER_CALLBACK , array ( " options " => " convertSpace " ) ) ?> ;
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 le tableau contenant notre fonction