Validation du formulaire PHP
Dans ce chapitre, nous présenterons comment utiliser PHP pour vérifier les données du formulaire soumises par le client.
Les entrées utilisateur doivent être validées (via le script client) autant que possible. La validation du navigateur est plus rapide et réduit la charge sur le serveur.
Si les entrées de l'utilisateur doivent être insérées dans une base de données, vous devriez envisager d'utiliser la validation du serveur. Un bon moyen de valider un formulaire sur le serveur est de se transmettre le formulaire à lui-même, plutôt que de passer à une autre page. De cette façon, les utilisateurs peuvent recevoir des messages d’erreur sur la même page de formulaire. Il sera plus facile pour les utilisateurs de trouver les erreurs.
Nous devons prendre en compte la sécurité lors du traitement des formulaires PHP.
Dans ce chapitre, nous démontrerons le traitement sécurisé des données du formulaire PHP. Afin de prévenir les pirates informatiques et le spam, nous devons effectuer une vérification de la sécurité des données sur le formulaire.
Exemple de validation de formulaire PHP
Le formulaire ci-dessus utilise les règles de validation suivantes :
Nous examinons d'abord le code HTML pur de ce formulaire :
Les champs de texte
le nom, l'e-mail et le site Web sont des éléments de saisie de texte, et le champ de commentaire est une zone de texte. Le code HTML est comme ceci :
Name: <input type="text" name="name"> E-mail: <input type="text" name="email"> Website: <input type="text" name="website"> Comment: <textarea name="comment" rows="5" cols="40"></textarea>
Bouton radio
Le champ genre est un seul bouton Sélectionner, le code HTML est comme ceci :
Gender: <input type="radio" name="gender" value="female">Female <input type="radio" name="gender" value="male">Male
Élément de formulaire
Le code HTML du formulaire est comme ceci :
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Lorsque ce formulaire est soumis, les données du formulaire sont envoyées via method="post".
Qu'est-ce que la variable $_SERVER["PHP_SELF"] ?
$_SERVER["PHP_SELF"] est une variable super globale qui renvoie le nom de fichier du script en cours d'exécution.
Ainsi, $_SERVER["PHP_SELF"] envoie les données du formulaire à la page elle-même au lieu de passer à une autre page. De cette manière, les utilisateurs peuvent obtenir des informations sur les messages d'erreur sur la page du formulaire.
Qu'est-ce que la fonction htmlspecialchars() ? La fonction
htmlspecialchars() convertit les caractères spéciaux en entités HTML. Cela signifie que les caractères HTML tels que < et > Cela empêche les attaquants d'exploiter le code en injectant du code HTML ou JavaScript dans le formulaire (attaques de cross-site scripting).
Rappel important sur la sécurité des formulaires PHP
Les variables $_SERVER["PHP_SELF"] peuvent être exploitées par des hackers !
Si votre page utilise PHP_SELF, les utilisateurs peuvent saisir un trait de soulignement et exécuter des scripts intersites (XSS).
Conseil : les scripts intersites (XSS) sont un type de vulnérabilité de sécurité informatique que l'on trouve couramment dans les applications Web. XSS permet à un attaquant de saisir un script côté client dans des pages Web consultées par d'autres utilisateurs.
Supposons que nous ayons le formulaire suivant dans une page nommée "test_form.php" :
<form method="post" action= "< ?php echo $_SERVER["PHP_SELF"];?>">
Maintenant, si l'utilisateur saisit l'URL normale dans la barre d'adresse : "http://www php.cn. /test_form.php", le code ci-dessus sera converti en :
<form method="post" action="test_form.php">
Jusqu'à présent, tout est normal.
Cependant, si l'utilisateur tape l'URL suivante dans la barre d'adresse :
http://www.php.cn/test_form.php/%22%3E%3Cscript%3Ealert(' php ')%3C/script%3E
Dans ce cas, le code ci-dessus sera converti en :
<form method="post" action="test_form.php "/><script>alert('php')</script>
Ce code ajoute un script et une commande d'invite. Et lorsque la page se chargera, le code JavaScript sera exécuté (l'utilisateur verra une info-bulle). Ceci est juste un exemple simple et inoffensif de la façon dont la variable PHP_SELF peut être exploitée.
Vous devez savoir que la balise <script> peut contenir n'importe quel code JavaScript ! Les pirates peuvent rediriger les utilisateurs vers un fichier sur un autre serveur, et le code malveillant contenu dans ce fichier peut modifier les variables globales ou soumettre des formulaires à d'autres adresses pour enregistrer les données utilisateur, etc.
Comment empêcher $_SERVER["PHP_SELF"] d'être exploité ?
L'utilisation de la fonction htmlspecialchars() peut empêcher l'exploitation de $_SERVER["PHP_SELF"].
Le code du formulaire est le suivant :
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" > ;
La fonction htmlspecialchars() convertit les caractères spéciaux en entités HTML. Désormais, si l'utilisateur tente d'exploiter la variable PHP_SELF, le résultat suivant sera obtenu :
<form method="post" action="test_form.php/"><script>alert( 'php')< + La première chose est de transmettre toutes les variables via la fonction htmlspecialchars() de PHP
<script>location.href('http://www.php.cn')</script>
Maintenant, ce code est affiché sur la page ou dans l'e- le courrier est en sécurité.
Lorsque l'utilisateur soumet le formulaire, nous devons faire deux autres choses :
1. (Grâce à la fonction PHP trim()) Supprimer les caractères inutiles (espaces supplémentaires) dans les données saisies par l'utilisateur. , tabulation, nouvelle ligne)
2. (via la fonction PHP stripslashes()) Supprimez les barres obliques inverses dans les données d'entrée utilisateur ()
Ensuite, nous créons une fonction de vérification (par rapport à l'écriture de code encore et encore le rend plus efficace).
Nous avons nommé la fonction test_input().