Maison  >  Article  >  développement back-end  >  Filtrage de formulaire PHP : prévention et filtrage des injections SQL

Filtrage de formulaire PHP : prévention et filtrage des injections SQL

WBOY
WBOYoriginal
2023-08-07 15:49:442302parcourir

Filtrage de formulaire PHP : prévention et filtrage des injections SQL

Filtrage de formulaires PHP : prévention et filtrage des injections SQL

Introduction :

Avec le développement rapide d'Internet, le développement d'applications Web est devenu de plus en plus courant. Dans le développement Web, les formulaires sont l’un des moyens d’interaction les plus courants avec les utilisateurs. Cependant, il existe des risques de sécurité dans le traitement des données de soumission des formulaires. Parmi eux, l’un des risques les plus courants concerne les attaques par injection SQL.

L'attaque par injection SQL est une méthode d'attaque qui utilise une application Web pour traiter de manière incorrecte les données saisies par l'utilisateur, permettant à l'attaquant d'effectuer des requêtes de base de données non autorisées. En injectant du code SQL malveillant dans la zone de saisie, les attaquants peuvent obtenir, modifier, supprimer ou même détruire les données de la base de données.

Afin de prévenir les attaques par injection SQL, nous devons filtrer et traiter correctement les données saisies par l'utilisateur. Ci-dessous, nous présenterons quelques méthodes de filtrage de formulaire PHP couramment utilisées et fournirons des exemples de code correspondants.

  1. Filtrage de chaînes

Le filtrage de chaînes est l'une des méthodes de filtrage de formulaires les plus courantes. En utilisant les fonctions intégrées ou les expressions régulières de PHP, nous pouvons filtrer certains caractères spéciaux et mots-clés pour empêcher les utilisateurs de saisir du code malveillant.

1.1 Filtrage de chaînes à l'aide des fonctions intégrées de PHP

Exemple de code :

$name = $_POST['name'];
$filtered_name = filter_var($name, FILTER_SANITIZE_STRING);

Dans l'exemple ci-dessus, nous avons filtré le nom saisi par l'utilisateur via la fonction filter_var et l'option FILTER_SANITIZE_STRING. Cette option filtrera les caractères spéciaux dans la chaîne d'origine.

1.2 Utilisation d'expressions régulières pour le filtrage de chaînes

Exemple de code :

$email = $_POST['email'];
$filtered_email = preg_replace('/[^a-zA-Z0-9@.]/', '', $email);

Dans l'exemple ci-dessus, nous utilisons la fonction preg_replace et les expressions régulières pour remplacer les caractères à l'exception des lettres majuscules et minuscules, des chiffres, @ et chaîne vide. De cette façon, nous pouvons filtrer certains caractères spéciaux pour garantir que l'adresse e-mail saisie par l'utilisateur est légale.

  1. Filtrage numérique

Le filtrage numérique est utilisé pour filtrer les données numériques saisies par l'utilisateur afin de garantir leur légalité.

2.1 Filtrage numérique à l'aide des fonctions intégrées de PHP

Exemple de code :

$age = $_POST['age'];
$filtered_age = filter_var($age, FILTER_SANITIZE_NUMBER_INT);

Dans l'exemple ci-dessus, nous avons filtré l'âge saisi par l'utilisateur à l'aide de la fonction filter_var et de l'option FILTER_SANITIZE_NUMBER_INT. Cette option filtrera les caractères non numériques de la valeur d'origine.

2.2 Filtrage des nombres à l'aide d'expressions régulières

Exemple de code :

$price = $_POST['price'];
$filtered_price = preg_replace('/[^0-9.]/', '', $price);

Dans l'exemple ci-dessus, nous utilisons la fonction preg_replace et les expressions régulières pour remplacer les caractères sauf les nombres et par des chaînes vides. De cette manière, nous pouvons filtrer certains caractères spéciaux et garantir que le prix saisi par l'utilisateur est légal.

  1. Prévention des injections SQL

En plus de filtrer les données saisies par l'utilisateur, nous devons également prendre certaines mesures de sécurité pour empêcher les attaques par injection SQL.

3.1 Utilisation d'instructions préparées

Exemple de code :

$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password');
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

Dans l'exemple ci-dessus, nous utilisons les instructions préparées de PDO pour exécuter des requêtes de base de données. En utilisant des paramètres de liaison, nous pouvons éviter de fusionner directement les données saisies par l'utilisateur dans les requêtes, empêchant ainsi efficacement les attaques par injection SQL.

Conclusion :

Dans le développement Web, les formulaires sont un moyen très important d'interaction utilisateur. Cependant, lors du traitement des données du formulaire, nous devons être très prudents pour nous prémunir contre les attaques par injection SQL. Grâce à un filtrage raisonnable des données et à l'utilisation d'instructions préparées, nous pouvons garantir que les données saisies par les utilisateurs sont légales et prévenir efficacement les attaques par injection SQL. J'espère que cet article pourra vous aider à comprendre le filtrage des formulaires PHP et la prévention des injections SQL.

Références :

  1. PHP : filter_var - Manuel (s.d.) Extrait de https://www.php.net/manual/en/function.filter-var.php
  2. PHP : preg_replace - Manuel (s.d.). ). Récupéré de https://www.php.net/manual/en/function.preg-replace.php
  3. SQL Injection (s.d.). Récupéré de https://www.owasp.org/index.php /. SQL_Injection

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