Position actuelle: Accueil> Derniers articles> PHP Security Development: un guide pratique pour demander la vérification et le filtrage des entrées

PHP Security Development: un guide pratique pour demander la vérification et le filtrage des entrées

M66 2025-06-10

introduction

Dans le processus de développement des applications Web, la sécurité des données a toujours été l'un des principaux problèmes. En tant que langage de développement backend populaire, PHP fournit une variété de mécanismes pour vérifier et filtrer efficacement l'entrée des utilisateurs. Cet article vous guidera à travers plusieurs pratiques de sécurité qui sont largement adoptées dans le développement réel, empêchant ainsi les attaques communes et améliorant la sécurité du système.

1. Utilisez des fonctions de filtre pour traiter les données d'entrée

La fonction de filtre intégrée de PHP peut aider les développeurs à vérifier et à purifier rapidement l'entrée de l'utilisateur, et est la méthode préférée pour traiter les données du formulaire. L'exemple suivant montre comment traiter l'entrée par e-mail à l'aide de `filter_input ()` et `filter_var ()`:
 
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // Adresse e-mail valable,Continuer à traiter
} else {
    // Adresse e-mail non valide,Afficher le message d'erreur
}

Ici, filter_input () nettoie d'abord l'entrée, filter_var () , puis vérifie davantage sa légitimité. L'utilisation de la combinaison peut effectivement empêcher les données non valides ou malveillantes d'entrer dans la couche logique métier.

2. Utilisez des expressions régulières pour la vérification du format

Pour une vérification du format d'entrée plus complexe, comme le numéro de téléphone mobile, le numéro d'identification, etc., les expressions régulières sont un outil puissant. La fonction `preg_match () 'dans PHP peut être utilisée pour faire correspondre avec précision les formats d'entrée:
 
$phone = $_POST['phone'];
$pattern = "/^(\+?\d{1,3}-)?\d{10}$/";

if (preg_match($pattern, $phone)) {
    // Le numéro de téléphone est valide,Continuer à traiter
} else {
    // Numéro de téléphone non valide,Inviter l'utilisateur
}

L'expression régulière utilisée dans cet exemple prend en charge les préfixes de code régional de pays en option et nécessite que le numéro de téléphone soit à 10 chiffres, améliorant efficacement la précision de la vérification des entrées.

3. Empêchez les attaques de scripts croisés (XSS)

Les attaques XSS se produisent généralement lorsque l'entrée de l'utilisateur est sortie directement sur la page sans traitement. La fonction `htmlSpecialChars ()` fournie par PHP peut coder des caractères potentiellement dangereux, bloquant ainsi efficacement l'injection XSS:
 
$comment = $_POST['comment'];
$encoded_comment = htmlspecialchars($comment);

// Stockez les commentaires encodés dans une base de données ou affichez-les sur une page

En échappant aux caractères spéciaux tels que <et> , même si l'attaquant injecte des balises de script, il ne sera pas analysé et exécuté par le navigateur, évitant ainsi un comportement malveillant.

4. Empêcher les attaques d'injection SQL

L'injection SQL est une menace de sécurité grave, et un attaquant peut envahir le système de base de données en construisant des déclarations malveillantes. Des déclarations préparées sont recommandées pour éviter de telles attaques. Ce qui suit est la méthode de requête sécurisée implémentée à l'aide de l'APD:
 
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(":username", $username);

$username = $_POST['username'];
$stmt->execute();

En liant les paramètres au lieu d'épisser directement les chaînes, vous pouvez vous assurer que les données d'entrée sont automatiquement échappées et empêcher efficacement le comportement d'injection.

Conclusion

La vérification et le filtrage des entrées ne sont pas seulement des tâches au stade de codage, mais aussi la pierre angulaire des politiques de sécurité du système Web. Des fonctions de filtre de base aux expressions régulières complexes, du XSS à l'injection SQL, chaque étape est cruciale. Il est recommandé de normaliser ces pratiques dans le développement réel et de créer une ligne de sécurité complète.