Validation du f...LOGIN

Validation du formulaire PHP


Validation du formulaire HTML

Lorsque le formulaire est utilisé pour collecter des informations de saisie auprès des clients, ne tenez pas pour acquis que les clients saisiront du contenu qui respecte les réglementations telles que attendu. Les entrées des clients doivent être strictement vérifiées à tout moment.

Vérification côté client

La vérification des formulaires côté client est généralement une méthode de vérification basée sur des scripts Javascript. Cette méthode de vérification peut réduire efficacement la charge sur le serveur et peut également rappeler immédiatement aux clients les entrées. erreurs.

Vérification côté serveur

Dans certains cas, en plus de la vérification côté client, une vérification côté serveur peut également être requise (comme l'accès à une base de données). À ce stade, une vérification logique doit être effectuée dans le programme PHP.

Nous devons prendre en compte la sécurité lorsque nous traitons des formulaires PHP.

Dans ce chapitre, nous démontrerons le traitement de sécurité 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.

Le formulaire HTML introduit dans ce chapitre contient les champs de saisie suivants : champs de texte obligatoires et facultatifs, boutons radio et boutons de soumission :

form1.jpgAfficher le code »

Les règles de validation du formulaire ci-dessus sont les suivantes :

Champ                                                         Doit. +Ne peut inclure que des lettres et des espaces
E-mail. + Doit être une adresse e-mail valide (contient '@' et '.')

URL     Obligatoire. S'il est présent, il doit contenir une URL valide Remarques obligatoires. Champ de saisie multiligne (champ de texte)

Sexe                                                                                                                                                                            . Il faut en sélectionner un

Regardons d'abord le code pur du formulaire HTML :

Champ de texte

Les champs « Nom », « E-mail » et « Site Web » sont des éléments de saisie de texte, et le champ « Remarques » est une zone de texte. Le code HTML est le suivant :

« Nom » : <input type="text" name="name">
">
                Site Web : <input type="text " name="site web">
                                                                                                         >

Élément de formulaire

Le code du formulaire HTML est le suivant :

                                         htmlspecialchars ($ _ Server ["pHP_Self"];? & gt; "& gt;



Ce formulaire utilise la méthode Method =" Post " pour soumettre les données.

Qu'est-ce que la variable $_SERVER["PHP_SELF"] ?

$_SERVER["PHP_SELF"] est une super variable globale qui renvoie le courant Le nom de fichier du script exécuté, lié à la racine du document.


Ainsi, $_SERVER["PHP_SELF"] enverra les données du formulaire à la page actuelle au lieu de passer à une autre page.

Qu'est-ce que la méthode htmlspecialchars() ?


La fonction htmlspecialchars() convertit certains caractères prédéfinis en entités HTML. Les caractères prédéfinis pour

sont : & (esperluette) devient &

" (guillemet double) devient "

" (guillemet simple) ) devenir'
< (inférieur à) devenir<

> (supérieur à) devenir>

Choses qui nécessitent une attention particulière dans les formulaires PHP Où ? La variable

$_SERVER["PHP_SELF"] peut être utilisée par des pirates

Lorsque les pirates utilisent des liens HTTP de script intersite pour attaquer, la variable serveur $_SERVER["PHP_SELF"] sera également intégrée dans le script. La raison en est que les scripts intersites sont ajoutés au chemin du fichier exécutable, donc la chaîne $_SERVER["PHP_SELF"] contiendra le code du programme JavaScript derrière le lien HTTP.

XSS est également appelé CSS (Cross-Site Script), une attaque de script intersite. Des attaquants malveillants insèrent du code HTML malveillant dans une page Web Lorsqu'un utilisateur parcourt la page, le code HTML intégré dans la page Web sera exécuté, atteignant ainsi l'objectif particulier de l'utilisateur malveillant.

Spécifiez le nom de fichier de formulaire suivant comme "test_form.php":

<?php echo $_SERVER["PHP_SELF "];?>">

Maintenant, nous utilisons l'URL pour spécifier l'adresse de soumission "test_form.php", le code ci-dessus est modifié comme suit ;

Considérez toutefois que l'utilisateur saisira l'adresse suivante dans la barre d'adresse du navigateur :

                                                                                   ('piraté')%3C/script%3E                                                                                                                                                                                 

Le L'URL ci-dessus sera analysée dans le code suivant et exécutée :

                                                  "test_form.php/"><script>alert('hacked')</script>                                                                                                                                                                   "test_form.php/">< ;script>alert('piraté')</script> Ce code Javascript sera exécuté au chargement de la page (l'utilisateur verra une boîte pop-up). Ceci n'est qu'un exemple simple de la façon dont la variable PHP_SELF peut être exploitée par des pirates.

Veuillez noter que n'importe quel code JavaScript peut être ajouté dans la balise <script> Les pirates peuvent l'utiliser pour rediriger la page vers la page d'un autre serveur. Le fichier de code de la page peut protéger le code malveillant et le code peut modifier les variables globales ou obtenir les données du formulaire de l'utilisateur.

Comment éviter que $_SERVER["PHP_SELF"] soit exploité ?


$_SERVER["PHP_SELF"] peut être évité en utilisant la fonction htmlspecialchars().

le code du formulaire est le suivant :

                                                                                                                                                                                                                              ;              

htmlspecialchars() Convertit certains caractères prédéfinis en entités HTML. Désormais, si l'utilisateur souhaite utiliser la variable PHP_SELF, le résultat sera affiché comme suit :

& lt; form method = "post" action = "test_form.php/& quot; & lt; script & gt; alert ("piraté") & lt;/script & gt;

<尝> Essayez La vulnérabilité a échoué !

Utilisez PHP pour valider les données du formulaire

Tout d'abord, nous traitons toutes les données soumises par les utilisateurs via la fonction htmlspecialchars() de PHP.

Lorsque nous utilisons la fonction htmlspecialchars(), l'utilisateur essaie de soumettre le champ de texte suivant : ;/script> 'http://www.php.cn')</script> 🎜>

Le code ci-dessus est sûr et peut être affiché normalement sur la page ou inséré dans l'e-mail.

Lorsque l'utilisateur soumet le formulaire, nous ferons les deux choses suivantes :

Utiliser la fonction PHP trim() pour supprimer les caractères inutiles (tels que les espaces, les tabulations, les nouvelles lignes) dans l'utilisateur données d'entrée).

Utilisez la fonction PHP stripslashes() pour supprimer les barres obliques inverses() dans les données d'entrée utilisateur


Écrivons ensuite ces fonctions de filtrage dans une fonction que nous définissons nous-mêmes, afin d'améliorer considérablement la réutilisabilité du code.

Nommez la fonction test_input().

Maintenant, nous pouvons utiliser la fonction test_input() pour détecter toutes les variables dans $_POST. Le code du script est le suivant :

Instance

<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";
if($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}
function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Notez que. nous sommes Lorsque le script ci-dessus est exécuté, $_SERVER["REQUEST_METHOD"] sera utilisé pour détecter si le formulaire a été soumis. Si REQUEST_METHOD est POST, le formulaire sera soumis - et les données seront validées. Si le formulaire n’est pas soumis, la validation sera ignorée et affichée vide.

L'utilisation d'éléments de saisie dans les exemples ci-dessus est facultative et peut être affichée normalement même si l'utilisateur ne saisit aucune donnée.

Dans le chapitre suivant, nous présenterons comment vérifier les données saisies par l'utilisateur.

section suivante

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP中文网</title> </head> <body> <?php // 定义变量并默认设置为空值 $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>PHP 表单验证实例</h2> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> 网址: <input type="text" name="website"> <br><br> 备注: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> 性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br><br> <input type="submit" name="submit" value="Submit"> </form> <?php echo "<h2>您输入的内容是:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body>
soumettreRéinitialiser le code
chapitredidacticiel