PHP Form Validation
Ce chapitre explique comment utiliser nos données de formulaire PHP soumis par la validation du client.
PHP Form Validation
![]() | En traitant avec la forme de PHP , nous devons considérer la sécurité. Ce chapitre, nous allons vous montrer la sécurité des données PHP Form Processing, afin d'empêcher les pirates et le spam nous avons besoin pour assurer la validation des données de formulaire. |
---|
formulaire HTML décrit dans cette section contient les champs de saisie suivants: doit être utilisé avec les champs de texte en option, les boutons radio, et soumettre des boutons:
Au-dessus de la forme des règles de validation sont les suivantes:
champ | Les règles de validation |
---|---|
nom | Must. + Contenir uniquement des lettres et des espaces |
Must. + Doit être une adresse e-mail valide (y compris '@' et '.') | |
site | Must. Si elle est présente, elle doit contenir une URL valide |
remarque | Must. champ de saisie multi-ligne (champ de texte) |
sexe | Must. Vous devez sélectionner un |
Tout d'abord, penchons-nous sur la plaine du code de formulaire HTML:
Champ de texte
"Nom", "E-mail", et le champ "URL" est un élément de saisie de texte, le champ «notes» est un textarea. code HTML comme suit:
“名字”: <input type="text" name="name"> E-mail: <input type="text" name="email"> 网址: <input type="text" name="website"> 备注: <textarea name="comment" rows="5" cols="40"></textarea>
Bouton radio
"Sexe" champ est un bouton radio, le code HTML ressemble à ceci:
性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男
Les éléments de formulaire
HTML code de formulaire comme suit:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Utilisez cetteméthode = méthode "post"de formulaire pour soumettre les données.
![]() | Qu'est - ce que $ _SERVER [ "PHP_SELF"] des variables? $ _SERVER [ "PHP_SELF"] est une variable super-globale, retourne le nom du fichier de script en cours d'exécution associé à la racine du document. |
---|
Donc, $ _SERVER [ "PHP_SELF"] va envoyer les données de formulaire à la page en cours, au lieu de sauter à une autre page.
![]() | Quelle est la méthode htmlspecialchars ()? fonction htmlspecialchars () à certains caractères prédéfinis dans les entités HTML. Les caractères prédéfinis sont les suivants:
|
---|
forme PHP nécessaire pour provoquer l'attention à l'endroit où?
$ _SERVER [ "PHP_SELF"] des variables peut être utilisé par des pirates!
Lorsque les pirates utilisant cross-site scripting lien HTTP pour attaquer, $ _ SERVER [ "PHP_SELF"] variable sera implanté dans le script serveur. La raison est que le cross-site scripting fichier exécutable est attaché au chemin derrière, de sorte que $ _SERVER [ "PHP_SELF"] chaîne contiendra des liens HTTP derrière le code JavaScript.
![]() | XSS également connu sous le CSS (Cross-Site Script), attaques cross-site scripting. Un attaquant malveillant d'insérer la page Web malveillant dans le code html, lorsqu'un utilisateur parcourant la page, Web intégré dans le code html sera exécuté pour atteindre but spécifique de l'utilisateur malveillant. |
---|
Spécifiez le fichier de formulaire suivant nommé "test_form.php":
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Maintenant, nous utilisons l'URL de soumettre l'adresse "test_form.php" spécifiée, comme indiqué dans le code ci-dessus est modifié comme suit:
<form method="post" action="test_form.php">
Faire si bon.
Toutefois, en tenant compte de l'utilisateur saisir l'adresse suivante dans votre navigateur barre d'adresse:
http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
L'URL ci-dessus, sera interprété comme le code suivant et l'exécuter:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Ajouter un code de balise script et ajoutez commande d'alerte. Lorsque la page se charge exécutera le code Javascript (l'utilisateur verra un pop-up). Ceci est juste un exemple simple pour illustrer la variable PHP_SELF sera utilisée par les pirates.
S'il vous plaît noter que tout code JavaScript peut être ajouté à la balise <script>! Les pirates peuvent utiliser cette page pour rediriger vers un serveur sur une autre page, la page fichier de code pour protéger le code malveillant, le code peut être modifié pour obtenir l'utilisateur de variables globales ou des données de formulaire.
Comment éviter le $ _SERVER [ "PHP_SELF"] être exploités?
$ _SERVER [ "PHP_SELF"] par htmlspecialchars () pour éviter d'être exploités.
former code comme suit:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars () à certains caractères prédéfinis dans les entités HTML. Maintenant, si l'utilisateur veut utiliser des variables PHP_SELF, les résultats sont affichés comme suit:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
La tentative de la vulnérabilité a échoué!
Utiliser PHP validation des données de formulaire
de tout ce que nous avons soumis des données à la fonction utilisateur () First est traitée par les htmlspecialchars de PHP.
Lorsque nous utilisons les htmlspecialchars () la fonction, l'utilisateur tente de soumettre les champs de texte suivants:
<script>location.href('http://www.w3big.com')</script>
Le code ne sera pas exécuté, car il sera enregistré en tant que HTML code d'échappement comme suit:
<script>location.href('http://www.w3big.com')</script>
Le code ci-dessus est sûr et peut être affiché ou insérer le message dans la page.
Lorsque l'utilisateur soumet le formulaire, nous allons faire les deux choses suivantes:
- Utiliser PHP garniture () pour supprimer les données d'entrée d'utilisateur caractères inutiles (tels que: l'espace, tabulation, nouvelle ligne).
- Utilisez stripslashes PHP () fonction pour supprimer la barre oblique inverse des données d'entrée d'utilisateur (\)
Que ces fonctions de filtrage écrites en fonction de notre propre définition, ce qui peut grandement améliorer la réutilisabilité du code.
La fonction nommée test_input ().
Maintenant, nous pouvons test_input function () pour détecter toutes les variables dans $ _POST, le code de script est la suivante:
Exemples
// 定义变量并默认设置为空值
$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;
}
?>
Exécution instance »
Notez que lorsque nous exécutons le script ci-dessus, par $ _SERVER [ "REQUEST_METHOD"] pour détecter si le formulaire est soumis. Si REQUEST_METHOD est POST, le formulaire sera soumis - les données seront vérifiées. Si le formulaire est pas soumis va ignorer la vérification et affiche un blanc.
Utilisez les éléments d'entrée dans les exemples ci-dessus sont en option, même si l'utilisateur ne pénètre pas dans les données peuvent être affichées correctement.
Dans la section suivante, nous allons décrire comment valider les données saisies par l'utilisateur.