Latest web development tutorials
×

PHP cours

PHP cours PHP Brève introduction PHP installer PHP grammaire PHP variable PHP echo/print PHP Types de données PHP constante PHP chaîne PHP opérateurs PHP If...Else PHP Switch PHP tableau PHP Tri d'un tableau PHP Superglobales PHP While circulation PHP For circulation PHP fonction PHP Variables magiques PHP Namespaces PHP Object-Oriented

PHP forme

PHP forme PHP Authentification Forms PHP forme - Les champs obligatoires PHP forme - email de vérification et d'URL PHP Complète instance de formulaire PHP $_GET variable PHP $_POST variable

PHP Tutorial avancée

PHP Les tableaux multidimensionnels PHP date PHP contenir PHP fichier PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sécurité E-mail PHP Error PHP Exception PHP filtre PHP filtre avancé PHP JSON

PHP 7 Nouvelles fonctionnalités

PHP 7 Nouvelles fonctionnalités

PHP Base de données

PHP MySQL Brève introduction PHP MySQL raccordement PHP MySQL La création d'une base de données PHP MySQL Créer une table de données PHP MySQL Insérer des données PHP MySQL Insérez des données multiples PHP MySQL Déclarations préparées PHP MySQL Lire les données PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX Brève introduction AJAX PHP AJAX Base de données AJAX XML AJAX Recherche en temps réel AJAX RSS Reader AJAX vote

PHP Manuel de référence

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Traitement de l'image PHP RESTful

PHP Form Validation

Ce chapitre explique comment utiliser nos données de formulaire PHP soumis par la validation du client.


PHP Form Validation

note 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:

Afficher le code >>

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
E-mail 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.

note 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.

note 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:

  • & (Ampersand) devient & amp;
  • "(Double quote) devient & quot;
  • »(Citation unique) devient & # 039;
  • <(Moins) devient & lt;
  • > (Supérieur à) devient & gt;


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.

note 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/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

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:

&lt;script&gt;location.href('http://www.w3big.com')&lt;/script&gt;

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:

  1. Utiliser PHP garniture () pour supprimer les données d'entrée d'utilisateur caractères inutiles (tels que: l'espace, tabulation, nouvelle ligne).
  2. 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

<?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;
}
?>

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.