Maison >développement back-end >tutoriel php >Conseil rapide: comment filtrer les données avec PHP

Conseil rapide: comment filtrer les données avec PHP

Jennifer Aniston
Jennifer Anistonoriginal
2025-02-08 09:14:16708parcourir

Quick Tip: How to Filter Data with PHP

Points clés

  • Ne faites pas confiance à l'entrée externe dans l'application. Il est crucial de filtrer toutes les données contenues dans votre application pour empêcher les attaquants d'injecter du code.
  • Les deux principaux types de filtrage de données en PHP sont la vérification et le nettoyage. La vérification garantit que les entrées externes répondent aux attentes, tandis que le nettoyage supprime les caractères illégaux ou dangereux des entrées externes.
  • PHP fournit une gamme de filtres pour la vérification et le nettoyage. Ces filtres peuvent être appliqués en utilisant les fonctions 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().

La fonction

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:

<code class="language-php"><?php
$email = 'your.email@sitepoint.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo("This email is valid");
}</code>

Si l'objectif est de nettoyer la chaîne, nous pouvons utiliser le code suivant:

<code class="language-php"><?php
$string = "<h1>Hello World</h1>";

$sanitized_string = filter_var($string, FILTER_SANITIZE_STRING);
echo $sanitized_string;</code>

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:

<code class="language-php"><?php
if (filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
    echo "The email is being sent and is valid.";
}</code>

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!

FAQ sur le filtrage des données PHP (FAQ)

Quelle est l'importance du filtrage des données PHP?

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.

Comment fonctionne le filtrage des données PHP?

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().

Quelles sont les fonctions de filtre PHP courantes et comment les utiliser?

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é.

Comment utiliser la fonction 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:

<code class="language-php"><?php
$email = 'your.email@sitepoint.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo("This email is valid");
}</code>

Quelle est la différence entre la vérification et le nettoyage des données en PHP?

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).

Comment nettoyer les entrées utilisateur en PHP?

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:

<code class="language-php"><?php
$string = "<h1>Hello World</h1>";

$sanitized_string = filter_var($string, FILTER_SANITIZE_STRING);
echo $sanitized_string;</code>

Quels sont les indicateurs de filtre PHP courants et comment les utiliser?

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.

Comment utiliser les drapeaux de filtre dans PHP?

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:

<code class="language-php"><?php
if (filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
    echo "The email is being sent and is valid.";
}</code>

Quelle est la fonction 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.

Comment utiliser la fonction 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:

<code class="language-php"><?php
$email = 'your.email@sitepoint.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo("This email is valid");
}</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn