Introduction à la validation des contraintes HTML5
Les sites Web et les applications interactifs ne peuvent être imaginés sans des formulaires nous permettant de se connecter avec nos utilisateurs, et à obtenir les données nous avons besoin afin de sécuriser les transactions avec eux. Nous avons besoin entrée utilisateur valide, Cependant, nous devons l'acquérir d'une manière qui ne pas frustrer nos utilisateurs trop.
Bien que nous puissions améliorer la convivialité de nos formulaires avec des modèles de conception UX judicieusement choisis, HTML5 dispose également d’un mécanisme natif de validation des contraintes qui nous permet de: attraper les erreurs de saisie directement dans le front-end.
Dans ce post, nous allons nous concentrer sur validation des contraintes fournies par le navigateur, et regarder comment les développeurs frontend peuvent sécuriser la saisie de l'utilisateur valide à l'aide de HTML5.
Pourquoi nous avons besoin de la validation d'entrée front-end
Validation d'entrée a deux objectifs principaux. Le contenu que nous obtenons doit être:
1. Utile
Nous avons besoin données utilisables avec lesquelles nous pouvons travailler. Il faut faire entrer les gens données réalistes dans le bon format. Par exemple, personne qui est en vie aujourd'hui n'est né il y a 200 ans. Obtenir des données comme celle-ci peut sembler drôle au début, mais à long terme, c'est ennuyeux et remplit notre base de données avec des données inutiles..
2. sécurisé
En matière de sécurité, cela signifie que nous devons empêcher l'injection de contenu malveillant - délibéré ou accidentel.
L'utilité (obtenir des données raisonnables) peut être atteinte seulement du côté client, l'équipe d'arrière-plan ne peut pas aider trop avec cela. Pour atteindre Sécurité, Les développeurs front-end et backend doivent travailler ensemble.
Si les développeurs frontaux valident correctement les entrées côté client, le l'équipe backend devra faire face à beaucoup moins de vulnérabilités. Pirater (un site) implique souvent soumettre des données supplémentaires, ou données dans le mauvais format. Les développeurs peuvent lutter contre des failles de sécurité comme celles-ci, combattre avec succès depuis le début.
Par exemple, ce guide de sécurité PHP recommande de vérifier tout ce que nous pouvons du côté client. Ils soulignent l’importance de la validation des entrées frontales en donnant de nombreux exemples, tels que:
"La validation d'entrée fonctionne mieux avec des valeurs extrêmement restreintes, par exemple lorsqu'un élément doit être un entier, une chaîne alphanumérique ou une URL HTTP."
Dans la validation des entrées frontales, notre travail consiste à imposer des contraintes raisonnables sur l'entrée de l'utilisateur. La fonctionnalité de validation des contraintes de HTML5 nous donne les moyens de le faire.
Validation de contrainte HTML5
Avant HTML5, les développeurs frontaux étaient limités à validation de la saisie de l'utilisateur avec JavaScript, ce qui était un processus fastidieux et sujet aux erreurs. Pour améliorer la validation des formulaires côté client, HTML5 a introduit un validation de contrainte algorithme qui fonctionne dans les navigateurs modernes, et vérifie la validité de l'entrée soumise.
Pour faire l’évaluation, l’algorithme utilise le attributs de validation des éléments d'entrée, tel que ,
, et
. Si vous voulez savoir comment la validation des contraintes se déroule pas à pas dans le navigateur, consultez ce document WhatWG.
Grâce à la fonctionnalité de validation des contraintes de HTML5, nous pouvons exécuter tous tâches de validation d'entrée standard côté client sans JavaScript, uniquement avec HTML5.
Pour effectuer des tâches plus complexes liées à la validation, HTML5 nous fournit une API JavaScript de validation de contrainte nous pouvons utiliser pour configurer nos scripts de validation personnalisés.
Valider avec des types d'entrée sémantiques
HTML5 a introduit types d'entrées sémantiques que, mis à part la signification de l'élément pour les agents utilisateurs, peut également être utilisé pour valider la saisie de l'utilisateur en limitant les utilisateurs à un certain format d'entrée.
Outre les types de saisie qui existaient déjà avant HTML5 (texte
, mot de passe
, soumettre
, réinitialiser
, radio
, case à cocher
, bouton
, caché
), on peut aussi utiliser le suivant types d'entrée HTML5 sémantique: email
,tel
,url
,nombre
,temps
,rendez-vous amoureux
,date / heure
,datetime-local
, mois
,la semaine
, intervalle
, chercher
,Couleur
.
Nous pouvons utiliser en toute sécurité les types de saisie HTML5 avec les anciens navigateurs, car ils se comporteront comme champ dans les navigateurs qui ne les prennent pas en charge.
Voyons ce qui se passe lorsque l'utilisateur entre le mauvais type d'entrée. Supposons que nous ayons créé un champ de saisie contenant le code suivant:
Lorsque l'utilisateur tape une chaîne qui n'utilise pas de format de courrier électronique, l'algorithme de validation de contrainte ne soumet pas le formulaire, et renvoie un message d'erreur:
La même règle s’applique également aux autres types d’entrée, par exemple pour type = "url"
les utilisateurs peuvent uniquement soumettre une entrée qui suit le format de l'URL (commence par un protocole, tel que http: //
ou ftp: //
).
Certains types d’entrée utilisent une conception qui ne permet même pas aux utilisateurs d'entrer un mauvais format d'entrée, par exemple Couleur
et intervalle
.
Si nous utilisons le Couleur
type d'entrée l'utilisateur est contraint de choisir une couleur dans le sélecteur de couleurs ou de conserver le noir par défaut. Le champ de saisie est contraint par la conception, donc il ne laisse pas beaucoup de chance pour l'erreur de l'utilisateur.
Lorsque cela est approprié, vous pouvez envisager d'utiliser le Balise HTML qui fonctionne de manière similaire à ces types d’entrée contrainte par la conception; il permet aux utilisateurs de choisir dans une liste déroulante.
Utiliser les attributs de validation de HTML5
L'utilisation de types d'entrée sémantiques impose certaines contraintes sur ce que les utilisateurs sont autorisés à soumettre, mais dans de nombreux cas, nous souhaitons aller un peu plus loin. C'est quand le attributs liés à la validation du tag peut nous aider.
Les attributs liés à la validation appartiennent à certains types d’entrée (ils ne peuvent pas être utilisés tout types) sur lesquels ils imposent des contraintes supplémentaires.
1. Champs obligatoires
pour obtenir une entrée valide par tous les moyens
le Champs obligatoires
attribut est l'attribut de validation HTML le plus connu. C'est un attribut booléen ce qui veut dire ne prend aucune valeur, nous devons simplement le placer à l'intérieur du tag si on veut l'utiliser:
Si l'utilisateur oublie de saisir une valeur dans un champ de saisie obligatoire, le navigateur renvoie un message d'erreur qui les avertit de remplir le champ, et ils ne peut pas soumettre le formulaire jusqu'à ce qu'ils aient fourni une entrée valide. C'est pourquoi il est important de toujours marquer visuellement champs obligatoires pour les utilisateurs.
le Champs obligatoires
attribut peut être utilisé avec les types d'entrée suivants: texte
, chercher
, url
, tel
, email
, mot de passe
, rendez-vous amoureux
, date / heure
, datetime-local
, mois
, la semaine
,temps
, nombre
, case à cocher
, radio
, fichier
, plus avec le et
Balises HTML.
2. min
, max
et étape
pour la validation du numéro
le min
, max
et étape
les attributs nous permettent de mettre des contraintes sur les champs de saisie numérique. Ils peuvent être utilisés avec le intervalle
, nombre
, rendez-vous amoureux
, mois
, la semaine
, date / heure
, datetime-local
, et temps
types d'entrée.
le min
et max
les attributs fournissent un excellent moyen de facilement exclure les données déraisonnables. Par exemple, l'exemple ci-dessous oblige les utilisateurs à soumettre un âge compris entre 18 et 120 ans..
Lorsque l’algorithme de validation de contrainte se heurte à une entrée utilisateur plus petite que le min
, ou plus grand que le max
valeur, il l’empêche d’atteindre le serveur et renvoie un message d’erreur.
le étape
attribut spécifie un intervalle numérique entre les valeurs légales d'un champ de saisie numérique. Par exemple, si nous voulons que les utilisateurs choisissent uniquement les années bissextiles, nous pouvons ajouter le step = "4"
attribuer au champ. Dans l'exemple ci-dessous, j'ai utilisé le nombre
type d'entrée, car il n'y a pas type = "année"
en HTML5.
Avec les contraintes prédéfinies, les utilisateurs ne peuvent choisir d’années bissextiles entre 1972 et 2016 que s’ils utilisent la petite flèche vers le haut fournie avec le logiciel. nombre
type d'entrée. Ils peuvent également saisir manuellement une valeur dans le champ de saisie, mais si cela n’est pas conforme aux contraintes, le navigateur renvoie un message d’erreur..
3. longueur maximale
pour la validation de la longueur du texte
le longueur maximale
attribut permet de définir une longueur de caractère maximale pour les champs de saisie textuelle. Il peut être utilisé avec le texte
, chercher
, url
, tel
, email
et mot de passe
types d'entrée, et avec le Balise HTML.
le longueur maximale
Cet attribut peut être une excellente solution pour les champs de numéro de téléphone ne pouvant pas comporter plus d'un certain nombre de caractères, ou pour les formulaires de contact pour lesquels nous ne voulons pas que les utilisateurs écrivent plus d'une certaine longueur..
L'extrait de code ci-dessous montre un exemple pour ce dernier. Il contraint les messages des utilisateurs à 500 caractères..
le longueur maximale
attribut ne renvoie pas de message d'erreur, mais le navigateur ne permet tout simplement pas aux utilisateurs de saisir plus que le nombre de caractères spécifié. C'est pourquoi il est crucial de informer les utilisateurs sur la contrainte, sinon, ils ne comprendront pas pourquoi ils ne peuvent pas continuer à taper.
4. modèle
pour validation Regex
le modèle
attribuer nous permet de utiliser des expressions régulières dans notre processus de validation des entrées. Une expression régulière est un jeu de caractères prédéfini qui forment un certain motif. Nous pouvons l'utiliser soit pour rechercher des chaînes qui suivent le modèle, soit pour appliquer un certain format défini par le modèle.
Avec le modèle
attribut nous pouvons faire le dernier - contraindre les utilisateurs à soumettre leurs entrées dans un format qui correspond à l'expression régulière donnée.
le modèle
attribut a de nombreux cas d'utilisation, mais il peut être particulièrement utile lorsque nous voulons valider un mot de passe.
L'exemple ci-dessous nécessite que les utilisateurs entrent un mot de passe d'au moins 8 caractères et contenant au moins une lettre et un chiffre (source de l'expression rationnelle que j'ai utilisée)..
Encore quelques choses
Dans cet article, nous avons examiné comment utiliser le validation de formulaire fournie par le navigateur fourni par l'algorithme de validation de contrainte native de HTML5. Pour créer nos scripts de validation personnalisés, nous devons utiliser l'API de validation de contrainte qui peut être l'étape suivante dans le perfectionnement des compétences de validation de formulaire..
Les formulaires HTML5 sont accessibles par les technologies d'assistance, de sorte que nous n'avons pas nécessairement à utiliser le aria-required
Attribut ARIA pour marquer les champs de saisie obligatoires pour les lecteurs d'écran. Toutefois, il peut toujours être utile d’ajouter une prise en charge de l’accessibilité pour les anciens navigateurs. Il est également possible de désactiver la validation de contrainte en ajoutant le novalidate
attribut booléen à la élément.