Fermer

février 5, 2023

Comment filtrer les données avec PHP —

Comment filtrer les données avec PHP —


Dans cet article, nous verrons pourquoi il est si important de filtrer tout ce qui est incorporé dans nos applications. En particulier, nous verrons comment valider et assainir les données étrangères en PHP.

Ne faites jamais (jamais !) confiance aux contributions étrangères dans votre application. C’est l’une des leçons les plus importantes à apprendre pour quiconque développe une application Web.

L’apport étranger peut être n’importe quoi – de $_GET et $_POST les données d’entrée du formulaire, certains éléments du corps de la requête HTTP ou même certaines valeurs du $_SERVER superglobal. Les cookies, les valeurs de session et les fichiers de documents chargés et téléchargés sont également considérés comme des entrées étrangères.

Chaque fois que nous traitons, produisons, incluons ou concaténons des données étrangères dans notre code, il existe un vecteur potentiel pour que les attaquants injectent du code dans notre application (le soi-disant attaques par injection). Pour cette raison, nous devons nous assurer que chaque élément de données étrangères est correctement filtré afin qu’il puisse être intégré en toute sécurité dans l’application.

En ce qui concerne le filtrage, il existe deux types principaux : validation et assainissement.

Validation

Validation garantit que l’apport étranger est ce que nous attendons qu’il soit. Par exemple, nous pourrions nous attendre à une adresse e-mail, donc nous attendons quelque chose avec le ********@*****.*** format. Pour cela, nous pouvons utiliser le FILTER_VALIDATE_EMAIL filtre. Ou, si nous attendons un booléen, nous pouvons utiliser PHP FILTER_VALIDATE_BOOL filtre.

Parmi les filtres les plus utiles figurent FILTER_VALIDATE_BOOL, FILTER_VALIDATE_INTet FILTER_VALIDATE_FLOAT pour filtrer les types de base et les FILTER_VALIDATE_EMAIL et FILTER_VALIDATE_DOMAIN pour filtrer respectivement les e-mails et les noms de domaine.

Un autre filtre très important est le FILTER_VALIDATE_REGEXP qui nous permet de filtrer par rapport à une expression régulière. Avec ce filtre, nous pouvons créer nos filtres personnalisés en modifiant l’expression régulière par rapport à laquelle nous filtrons.

Tous les filtres disponibles pour la validation en PHP peuvent être trouvés ici.

Assainissement

Assainissement est le processus de suppression des caractères illégaux ou dangereux de l’entrée étrangère.

Le meilleur exemple de cela est lorsque nous nettoyons les entrées de la base de données avant de les insérer dans une requête SQL brute.

Encore une fois, certains des filtres de désinfection les plus utiles incluent ceux à désinfecter pour les types de base comme FILTER_SANITIZE_STRING, FILTER_SANITIZE_CHARS et FILTER_SANITIZE_INTmais aussi FILTER_SANITIZE_URL et FILTER_SANITIZE_EMAIL pour nettoyer les URL et les e-mails.

Tous les filtres de nettoyage PHP peuvent être trouvés ici.

filter_var() et filter_input()

Maintenant que nous savons que PHP dispose d’une sélection complète de filtres, nous devons savoir comment les utiliser.

L’application du filtre se fait via le filter_var() et filter_input() les fonctions.

Le filter_var() La fonction applique un filtre spécifié à une variable. Il prendra la valeur à filtrer, le filtre à appliquer et un tableau optionnel d’options. Par exemple, si nous essayons de valider une adresse e-mail, nous pouvons utiliser ceci :

<?php

$email = your.email@sitepoint.com:

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

Si le but était de nettoyer une chaîne, nous pourrions utiliser ceci :

<?php
$string = "<h1>Hello World</h1>";

$sanitized_string = filter_var ( $string, FILTER_SANITIZE_STRING);
echo $sanitized_string;

Le filter_input() La fonction obtient une entrée étrangère à partir d’une entrée de formulaire et la filtre.

Cela fonctionne exactement comme le filter_var() fonction, mais il faut un type d’entrée (on peut choisir parmi GET, POST, COOKIE, SERVERou ENV), la variable à filtrer et le filtre. En option, il peut également prendre un tableau d’options.

Encore une fois, si nous voulons vérifier si la variable d’entrée externe « email » est envoyée via GET à notre application, nous pouvons utiliser ceci:

<?php

if ( filter_input( INPUT_GET, "email", FILTER_VALIDATE_EMAIL ) ) {
    echo "The email is being sent and is valid.";
}

Conclusion

Et ce sont les bases du filtrage de données en PHP. D’autres techniques peuvent être utilisées pour filtrer les données étrangères, comme appliquer une expression régulièremais les techniques que nous avons vues dans cet article sont plus que suffisantes pour la plupart des cas d’utilisation.

Assurez-vous de bien comprendre la différence entre la validation et le nettoyage et comment utiliser les fonctions de filtrage. Avec ces connaissances, vos applications PHP seront plus fiables et sécurisées !




Source link