E-mails sécurisés PHP
E-mails sécurisés PHP
Dans le script de messagerie PHP de la section précédente, il existe une vulnérabilité.
Injection d'e-mail PHP
Tout d'abord, veuillez regarder le code PHP du chapitre précédent :
php中文网(php.cn) Email:
Subject:
Message:
"; } ?>
Le code ci-dessus Le problème est que des utilisateurs non autorisés peuvent insérer des données dans l'en-tête de l'e-mail via le formulaire de saisie.
Que se passera-t-il si l'utilisateur ajoute le texte suivant à l'e-mail dans la zone de saisie du formulaire ?
quelqu'un@exemple.com%0ACc:person2@exemple.com
%0ABcc:person3@exemple.com,person3@exemple.com,
une autre personne4@exemple. com,person5@example.com
%0ABTo:person6@example.com
Comme d'habitude, la fonction mail() place le texte ci-dessus dans l'en-tête de l'e-mail, donc maintenant l'en-tête a des éléments supplémentaires Les champs Cc:, Bcc: et To: ont été ajoutés. Lorsque l'utilisateur clique sur le bouton Soumettre, cet e-mail sera envoyé à toutes les adresses ci-dessus !
PHP empêche l'injection d'e-mails
La meilleure façon d'empêcher l'injection d'e-mails est de valider l'entrée.
Le code suivant est similaire à celui du chapitre précédent, mais ici nous avons ajouté un validateur d'entrée pour détecter le champ email dans le formulaire :
php中文网(php.cn) Email:
Subject:
Message:
"; } ?>
Dans le code ci-dessus, nous utilisons Filtre PHP pour valider la saisie :
Le filtre FILTER_SANITIZE_EMAIL supprime les caractères illégaux de l'email de la chaîne
· Le filtre FILTER_VALIDATE_EMAIL valide la valeur de l'adresse email
Vous pouvez lire plus d'informations sur les filtres dans notre filtre PHP.