Maison >développement back-end >tutoriel php >Filtrage des données PHP : de la saisie utilisateur à la sécurité de la base de données

Filtrage des données PHP : de la saisie utilisateur à la sécurité de la base de données

王林
王林original
2023-07-28 22:29:151421parcourir

Filtrage des données PHP : de la saisie utilisateur à la sécurité de la base de données

Présentation :
Dans le développement Web, la sécurité des données saisies par l'utilisateur est une question très importante. Un filtrage et une validation incorrects des entrées peuvent exposer la base de données à des attaques telles que l'injection SQL, le cross-site scripting (XSS), etc. Cet article expliquera comment utiliser PHP pour le filtrage et la validation des données afin de garantir la sécurité des données depuis la saisie de l'utilisateur jusqu'au stockage dans la base de données.

  1. Filtrage des entrées
    Les données saisies par l'utilisateur ne sont pas dignes de confiance, elles doivent donc être filtrées de manière appropriée. Voici quelques techniques courantes de filtrage d’entrée.

(1) HTML Escape
Les données saisies par l'utilisateur peuvent contenir des balises HTML Afin d'éviter les attaques XSS, les données doivent être échappées en HTML. PHP fournit la fonction htmlspecialchars() pour implémenter cette fonction.
Exemple de code :

$input = $_POST['input'];
$filteredInput = htmlspecialchars($input);

(2) Supprimer les espaces en excès
Avant de traiter la saisie de l'utilisateur, vous devez utiliser la fonction trim() pour supprimer les espaces en excès des données d'entrée.
Exemple de code :

$input = $_POST['input'];
$filteredInput = trim($input);

(3) Filtrer les caractères spéciaux
Afin d'éviter que les caractères spéciaux contenus dans les entrées utilisateur ne provoquent des problèmes d'exécution du code, vous pouvez utiliser la fonction filter_var() de PHP combinée avec le filtre FILTER_SANITIZE_STRING pour filtrer l'entrée.
Exemple de code :

$input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);
  1. Valider les données
    En plus de filtrer les entrées de l'utilisateur, vous devez également vérifier la légalité des données saisies. Voici quelques techniques de validation des données couramment utilisées.

(1) Vérifier l'e-mail
Vous pouvez utiliser la fonction filter_var() combinée avec le filtre FILTER_VALIDATE_EMAIL pour vérifier la légitimité de l'adresse e-mail.
Exemple de code :

$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // 邮箱地址合法
} else {
    // 邮箱地址非法
}

(2) Vérifier l'URL
Vous pouvez utiliser la fonction filter_var() combinée avec le filtre FILTER_VALIDATE_URL pour vérifier la légitimité de l'URL.
Exemple de code :

$url = $_POST['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
    // URL合法
} else {
    // URL非法
}

(3) Vérifier les nombres
Vous pouvez utiliser la fonction is_numeric() pour vérifier si l'entrée est un nombre.
Exemple de code :

$number = $_POST['number'];
if (is_numeric($number)) {
    // 输入为数字
} else {
    // 输入非数字
}
  1. Sécurité de la base de données
    Avant de stocker les données saisies par l'utilisateur dans la base de données, les données doivent être traitées davantage pour garantir la sécurité de la base de données.

(1) Utilisez des instructions préparées
Les instructions préparées sont un moyen de transmettre des paramètres via des espaces réservés, ce qui peut empêcher efficacement les attaques par injection SQL. En utilisant PDO ou la bibliothèque d'extension mysqli, vous pouvez facilement utiliser des instructions préparées pour effectuer des opérations de base de données.
Exemple de code (en utilisant PDO) :

$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $email);
$name = $_POST['name'];
$email = $_POST['email'];
$stmt->execute();

(2) Utilisation du hachage de mot de passe
Lors du stockage des mots de passe utilisateur, ils ne doivent pas être stockés en texte clair, mais stockés à l'aide de hachages de mot de passe. PHP fournit la fonction password_hash() pour implémenter le hachage de mot de passe.
Exemple de code :

$password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

Résumé :
Dans le développement Web, la sécurité des données est cruciale. Grâce au filtrage et à la validation des entrées utilisateur, ainsi qu'à une gestion appropriée de la sécurité de la base de données, la sécurité des applications Web peut être améliorée et les menaces de sécurité potentielles peuvent être efficacement évitées. Dans le développement réel, nous devons choisir des méthodes appropriées de filtrage et de vérification des données en fonction des besoins spécifiques afin de protéger la sécurité des données des utilisateurs.

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