Points clés
filter_var()
et filter_input()
pour rendre vos applications PHP plus sûres et plus fiables. Cet article explorera pourquoi tout ce qui est contenu dans une demande de filtre est si important. En particulier, nous examinerons comment valider et nettoyer les données externes en PHP.
Ne faites absolument pas confiance aux entrées externes dans l'application . C'est l'une des leçons les plus importantes que toute personne qui développe une application Web doit apprendre.
Entrée externe peut être n'importe quoi - des données d'entrée des formulaires $_GET
et $_POST
, certains éléments du corps de demande HTTP, et même certaines valeurs dans la variable hyperglobale $_SERVER
. Les cookies, les valeurs de session et les fichiers de documents téléchargés et téléchargés sont également considérés comme des entrées externes.
Chaque fois que nous traitons, sortions, incluons ou connectons des données externes dans notre code, il est possible pour un attaquant d'injecter le code dans notre application (soi-disant attaque d'injection). Par conséquent, nous devons nous assurer que chaque pièce de données externes est correctement filtrée afin qu'elle puisse être intégrée en toute sécurité dans l'application.
En termes de filtrage, il existe deux types principaux: la vérification et le nettoyage.
Vérification
Vérifiez que les entrées externes répondent à nos attentes. Par exemple, nous pouvons nous attendre à une adresse e-mail, nous nous attendons donc à un format similaire à name@domain.com
. Pour ce faire, nous pouvons utiliser le filtre FILTER_VALIDATE_EMAIL
. Ou, si nous nous attendons à un booléen, nous pouvons utiliser le filtre PHP FILTER_VALIDATE_BOOL
.
Les filtres les plus utiles incluent FILTER_VALIDATE_BOOL
, FILTER_VALIDATE_INT
et FILTER_VALIDATE_FLOAT
pour filtrer les types de base, et FILTER_VALIDATE_EMAIL
et FILTER_VALIDATE_DOMAIN
pour filtrer les e-mails et les noms de domaine, respectivement.
Un autre filtre très important est FILTER_VALIDATE_REGEXP
, ce qui nous permet de filtrer en fonction des expressions régulières. Avec ce filtre, nous pouvons créer un filtre personnalisé en modifiant les expressions régulières que nous filtrons.
Tous les filtres disponibles pour la vérification en PHP peuvent être trouvés ici.
Nettoyage
Le nettoyage est le processus de suppression des caractères illégaux ou dangereux de l'entrée externe.
Le meilleur exemple est que nous nettoyons l'entrée de la base de données avant de l'insérer dans la requête SQL d'origine.
De même, certains des filtres de nettoyage les plus utiles incluent des filtres pour nettoyer les types de base tels que FILTER_SANITIZE_STRING
, FILTER_SANITIZE_CHARS
et FILTER_SANITIZE_INT
, ainsi que FILTER_SANITIZE_URL
et FILTER_SANITIZE_EMAIL
pour le nettoyage des URL et du courrier électronique.
Tous les filtres de nettoyage PHP peuvent être trouvés ici.
filter_var()
et filter_input()
Maintenant que nous savons que PHP fournit une variété de filtres, nous devons savoir les utiliser.
L'application de filtre est effectuée via les fonctions filter_var()
et filter_input()
.
filter_var()
applique le filtre spécifié à la variable. Il obtiendra la valeur de filtrer, le filtre à appliquer et un tableau d'options en option. Par exemple, si nous essayons de vérifier l'adresse e-mail, nous pouvons utiliser le code suivant:
<?php $email = 'your.email@sitepoint.com'; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo("This email is valid"); }
Si l'objectif est de nettoyer la chaîne, nous pouvons utiliser le code suivant:
<?php $string = "<h1>Hello World</h1>"; $sanitized_string = filter_var($string, FILTER_SANITIZE_STRING); echo $sanitized_string;
filter_input()
La fonction prend l'entrée externe de l'entrée de formulaire et le filtre.
Il fonctionne de manière similaire à la fonction filter_var()
, mais elle nécessite le type d'entrée (nous pouvons choisir parmi les objets, le post, le cookie, le serveur ou le), les variables à filtrer et le filtre. Il obtient également sélectivement un tableau d'options.
De même, si nous voulons vérifier si la variable d'entrée externe "e-mail" est envoyée à notre application via GET, nous pouvons utiliser le code suivant:
<?php if (filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "The email is being sent and is valid."; }
Conclusion
Ce sont les bases du filtrage des données en PHP. D'autres techniques peuvent être utilisées pour filtrer les données externes, telles que l'application d'expressions régulières, mais les techniques que nous voyons dans cet article sont suffisantes pour la plupart des cas d'utilisation.
Assurez-vous de comprendre la différence entre la validation et le nettoyage et comment utiliser la fonction de filtre. Avec ces connaissances, votre application PHP sera plus fiable et sécurisée!
Le filtrage des données PHP est essentiel pour assurer la sécurité et l'intégrité de vos applications Web. Il aide à vérifier et à nettoyer les entrées des utilisateurs, une source commune de vulnérabilités de sécurité telles que l'injection SQL et les scripts croisés (XSS). En filtrant les données, vous pouvez empêcher les données malveillantes ou incorrectes de nuire à votre application ou à votre base de données. Il aide également à maintenir la cohérence et la fiabilité des données, ce qui est essentiel au fonctionnement fluide de l'application.
Le filtrage des données PHP fonctionne en appliquant des fonctions de filtre spécifiques aux données. Ces fonctions peuvent vérifier les données (vérifier si les données répondent à une condition spécifique) ou nettoyer les données (supprimer les caractères illégaux ou dangereux des données). PHP fournit une variété de fonctions de filtre intégrées que vous pouvez utiliser, telles que filter_var()
, filter_input()
et filter_has_var()
.
Certaines fonctions de filtre PHP courantes incluent filter_var()
, filter_input()
, filter_has_var()
et filter_id()
. La fonction filter_var()
utilise le filtre spécifié pour filtrer les variables. filter_input()
Les fonctions prennent des variables externes spécifiques par leur nom et filtrez-les éventuellement. La fonction filter_has_var()
vérifie si la variable du type d'entrée spécifié existe, tandis que la fonction filter_id()
renvoie l'ID de filtre appartenant au filtre nommé.
filter_var()
en php? La fonction filter_var()
dans PHP est utilisée pour filtrer les variables à l'aide du filtre spécifié. Il accepte deux paramètres: la variable à filtrer et le type de filtre à appliquer. Par exemple, pour vérifier qu'une variable est un e-mail, vous pouvez utiliser le filtre FILTER_VALIDATE_EMAIL
avec la fonction filter_var()
comme suit:
<?php $email = 'your.email@sitepoint.com'; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo("This email is valid"); }
La vérification des données dans PHP implique de vérifier si les données répondent à certaines conditions. Par exemple, vous pouvez vérifier votre adresse e-mail pour vous assurer qu'elle est formatée correctement. D'un autre côté, le nettoyage des données consiste à supprimer ou à remplacer tout caractères illégaux ou dangereux des données. Ceci est souvent destiné à empêcher les vulnérabilités de sécurité telles que l'injection SQL et les scripts croisés (XSS).
Vous pouvez utiliser la fonction filter_input()
et le nettoyage du filtre pour nettoyer les entrées utilisateur en PHP. Par exemple, pour nettoyer l'entrée du nom d'utilisateur, vous pouvez utiliser le filtre FILTER_SANITIZE_STRING
comme suit:
<?php $string = "<h1>Hello World</h1>"; $sanitized_string = filter_var($string, FILTER_SANITIZE_STRING); echo $sanitized_string;
L'indicateur de filtre PHP est utilisé pour ajouter des contraintes ou des modificateurs supplémentaires au processus de filtrage. Certains signes communs incluent FILTER_FLAG_STRIP_LOW
, FILTER_FLAG_STRIP_HIGH
, FILTER_FLAG_ENCODE_LOW
et FILTER_FLAG_ENCODE_HIGH
. Par exemple, l'indicateur FILTER_FLAG_STRIP_LOW
supprime les caractères avec des valeurs ASCII inférieures à 32 de l'entrée.
Vous pouvez utiliser des drapeaux de filtre dans PHP en les faisant passer en troisième arguments aux fonctions filter_var()
ou filter_input()
. Par exemple, pour filtrer les adresses IP et autoriser uniquement les adresses IPv4, vous pouvez utiliser l'indicateur FILTER_FLAG_IPV4
comme suit:
<?php if (filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "The email is being sent and is valid."; }
filter_has_var()
en php? La fonction filter_has_var()
dans PHP est utilisée pour vérifier si une variable du type d'entrée spécifié existe. Il accepte deux paramètres: type d'entrée et nom de variable. Renvoie True si la variable existe; Sinon, Renvoie False.
filter_has_var()
en php? Vous pouvez utiliser la fonction filter_has_var()
en PHP pour vérifier si une variable d'entrée spécifique existe. Par exemple, pour vérifier si une variable de poste nommée "nom d'utilisateur" existe, vous pouvez le faire:
<?php $email = 'your.email@sitepoint.com'; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo("This email is valid"); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!