Validation de données
En informatique, la validation de donnĂ©es est un processus permettant de sâassurer que les donnĂ©es ont subi un tri adĂ©quat afin de ne garder que les donnĂ©es de qualitĂ©. Ainsi les donnĂ©es deviennent correctes et utiles. Le processus utilise des routines souvent nommĂ©es « rĂšgles de validation » ou bien « contraintes de validation » qui vĂ©rifient lâexactitude, la signification et la sĂ©curitĂ© des donnĂ©es qui sont entrĂ©es dans le systĂšme de validation. Les rĂšgles peuvent ĂȘtre mises en Ćuvre via des fonctionnalitĂ©s automatisĂ©es dâun dictionnaire de donnĂ©es ou par lâinclusion d'un logiciel dotĂ© dâune logique de validation.
Aperçu
La validation des donnĂ©es est destinĂ©e Ă fournir certaines garanties bien dĂ©finies pour l'adĂ©quation, la prĂ©cision et la cohĂ©rence pour tout type de saisie utilisateur dans une application ou un systĂšme automatisĂ©. Les rĂšgles de validation des donnĂ©es peuvent ĂȘtre dĂ©finies et conçues Ă l'aide de diverses mĂ©thodologies et ĂȘtre dĂ©ployĂ©es dans diffĂ©rents contextes[1].
Des rĂšgles de validation des donnĂ©es peuvent ĂȘtre dĂ©finies, conçues et dĂ©ployĂ©es, par exemple:
Contextes de définition et de conception:
- Dans le cadre de la phase de collecte des exigences dans une ingénierie logicielle ou la conception d'une spécification logicielle
- Dans le cadre d'une phase de modélisation des opérations BPM
Departements :
- comme un ensemble de programmes ou de routines de logique métier dans un langage de programmation
- comme un ensemble de procédures stockées dans un systÚme de gestion de base de données
Pour les applications mĂ©tier, la validation des donnĂ©es peut ĂȘtre dĂ©finie via des rĂšgles dĂ©claratives d' intĂ©gritĂ© des donnĂ©es ou des rĂšgles mĂ©tier basĂ©es sur des procĂ©dures[2]. Les donnĂ©es non conformes Ă ces rĂšgles affecteront nĂ©gativement l'exĂ©cution des processus mĂ©tier. Par consĂ©quent, la validation des donnĂ©es doit commencer par la dĂ©finition du processus mĂ©tier et un ensemble de rĂšgles mĂ©tier au sein de ce processus. Les rĂšgles peuvent ĂȘtre collectĂ©es via l'exercice de capture des exigences[3].
Différents types de validation des données
En Ă©valuant les bases de la validation des donnĂ©es, des gĂ©nĂ©ralisations peuvent ĂȘtre faites concernant les diffĂ©rents types de validation, selon la portĂ©e, la complexitĂ© et le but des diffĂ©rentes opĂ©rations de validation Ă effectuer.
Par exemple:
- Validation du type de données
- Validation de la plage et des contraintes
- Validation du code et des références croisées
- Validation structurée
Vérification du type de données
La validation du type de données est généralement effectuée sur un ou plusieurs champs de données simples.
Le type le plus simple de validation de type de données vérifie que les caractÚres individuels fournis par l'entrée utilisateur sont cohérents avec les caractÚres attendus d'un ou plusieurs types de données primitifs connus; tel que défini dans un langage de programmation ou un mécanisme de stockage et de récupération de données ainsi que la spécification des types de données primitifs suivants: 1) entier; 2) flottant (décimal); ou 3) chaßne.
Par exemple, de nombreux systĂšmes de base de donnĂ©es permettent la spĂ©cification de certains caractĂšres spĂ©ciaux tels que â,â â+â â-â et mĂȘme â(â. Une routine de validation des donnĂ©es plus sophistiquĂ©e vĂ©rifierait que l'utilisateur a entrĂ© un code de pays valide, c'est-Ă -dire que le nombre de chiffres saisis correspond Ă la convention du pays ou de la zone spĂ©cifiĂ©e.
Un processus de validation comprend deux étapes distinctes: (a) vérification de validation et (b) action aprÚs vérification. L'étape de vérification utilise une ou plusieurs rÚgles de calcul.
Validation la plage simple et des contraintes
La validation de plage simple et de la contrainte permet dâexaminer la cohĂ©rence de l'entrĂ©e utilisateur avec une plage minimale / maximale, ou la cohĂ©rence avec un test d'Ă©valuation d'une sĂ©quence de caractĂšres, tel qu'un ou plusieurs tests par rapport aux expressions rĂ©guliĂšres. Par exemple, un numĂ©ro de tĂ©lĂ©phone amĂ©ricain doit avoir 10 chiffres et pas de lettres ou de caractĂšres spĂ©ciaux.
Vérification du code et des références croisées
La validation du code et des références croisées comprend des tests de validation du type de données, combinés à une ou plusieurs opérations pour vérifier que les données fournies par l'utilisateur sont cohérentes avec une ou plusieurs rÚgles, exigences ou contraintes de validité externes pertinentes pour une organisation, un contexte ou un ensemble particulier, des hypothÚses sous-jacentes. Ces contraintes de validité supplémentaires peuvent impliquer des références croisées fournies avec une table de recherche connue ou un service d'informations d'annuaire tel que LDAP.
Par exemple, un utilisateur expérimenté peut entrer une chaßne bien formée qui correspond à la spécification d'une adresse e-mail valide, telle que définie dans la RFC 5322[4] - [5] - [6], mais cette chaßne bien formée peut ne pas correspondre réellement à un domaine résoluble connecté à un compte de messagerie actif.
ContrÎle structuré
La validation structurée permet de combiner l'une des différentes étapes de validation de type données de base, ainsi qu'un traitement plus complexe. Un tel traitement complexe peut comprendre le test de contraintes conditionnelles pour un objet de données complexe entier ou un ensemble d'opérations de processus dans un systÚme.
Une rĂšgle de validation est un critĂšre ou une contrainte utilisĂ© dans le processus de validation des donnĂ©es, effectuĂ© aprĂšs que les donnĂ©es aient Ă©tĂ© encodĂ©es sur un support d'entrĂ©e et implique un programme de validation. Ceci est distinct de la vĂ©rification formelle, oĂč le fonctionnement d'un programme est dĂ©terminĂ© comme Ă©tant celui qui Ă©tait prĂ©vu et qui rĂ©pond Ă l'objectif. La rĂšgle de validation ou le systĂšme de vĂ©rification encore utilisĂ© par de nombreux grands fabricants de logiciels a Ă©tĂ© conçu par un employĂ© de Microsoft entre 1997 et 1999.
La mĂ©thode consiste Ă vĂ©rifier que les donnĂ©es respectent les paramĂštres appropriĂ©s dĂ©finis par l'analyste systĂšme. Un jugement quant Ă la validitĂ© des donnĂ©es est rendu possible par le programme de validation, mais il ne peut garantir une exactitude complĂšte. Cela ne peut ĂȘtre atteint que par l'utilisation de toutes les commandes de bureau et informatiques intĂ©grĂ©es au systĂšme au stade de la conception. La diffĂ©rence entre la validitĂ© et l'exactitude des donnĂ©es peut ĂȘtre illustrĂ©e par un exemple trivial:
Une entreprise a crĂ©Ă© un fichier personnel et chaque enregistrement contient un champ pour la classe d'emploi. Les valeurs autorisĂ©es sont A, B, C ou D. Une entrĂ©e dans un enregistrement peut ĂȘtre validĂ©e et acceptĂ©e par le systĂšme s'il s'agit de l'un de ces caractĂšres, mais il peut ne pas s'agir du grade correct pour le travailleur concernĂ©. L'exactitude d'une note ne peut ĂȘtre Ă©tablie que par des vĂ©rifications administratives ou par rĂ©fĂ©rence Ă d'autres fichiers.
Par consĂ©quent, lors de la conception des systĂšmes, des dĂ©finitions de donnĂ©es sont Ă©tablies et limitent ce qui constitue des donnĂ©es valides. Ă l'aide de ces dĂ©finitions de donnĂ©es, une sĂ©rie de vĂ©rifications de validation logicielle peut ĂȘtre effectuĂ©e.
ContrÎle de cohérence
Le contrĂŽle de cohĂ©rence garantit que les donnĂ©es saisies sont logiques. Par exemple, la date de livraison ne peut pas ĂȘtre antĂ©rieure Ă la date de commande.
VĂ©rification de la plage
- Ne s'applique pas Ă l'ISBN, mais les donnĂ©es doivent gĂ©nĂ©ralement se situer dans les valeurs prĂ©dĂ©finies maximale et minimale. Par exemple, les numĂ©ros de compte client peuvent ĂȘtre limitĂ©s dans les valeurs 10000 Ă 20000, s'il s'agit de la plage arbitraire des numĂ©ros utilisĂ©s pour le systĂšme
CritĂšres
Un exemple de vérification de validation est la procédure utilisée pour vérifier un ISBN.
- Taille: Le nombre de caractĂšres dans une valeur d'Ă©lĂ©ment de donnĂ©es est vĂ©rifiĂ©; par exemple, un ISBN doit ĂȘtre composĂ© de 10 caractĂšres seulement (dans la version prĂ©cĂ©dente - la norme pour 1997 et les versions ultĂ©rieures a Ă©tĂ© modifiĂ©e en 13 caractĂšres).
- VĂ©rification des formats: Les donnĂ©es doivent ĂȘtre conformes Ă un format spĂ©cifiĂ©. Ainsi, les 9 premiers caractĂšres doivent ĂȘtre les chiffres de 0 Ă 9, le 10Ăšme doit ĂȘtre ces chiffres ou un X
- Clef de contrĂŽle: Un chiffre supplĂ©mentaire calculĂ©, par exemple, sur un numĂ©ro de compte, peut ĂȘtre utilisĂ© comme dispositif d'autocontrĂŽle. Lorsque le numĂ©ro est entrĂ© dans l'ordinateur, le programme de validation effectue un calcul similaire Ă celui utilisĂ© pour gĂ©nĂ©rer Ă l'origine le chiffre de contrĂŽle et vĂ©rifie ainsi sa validitĂ©. Ce type de vĂ©rification mettra en Ă©vidence les erreurs de transcription lorsque deux ou plusieurs chiffres ont Ă©tĂ© transposĂ©s ou placĂ©s dans le mauvais ordre. Le 10eme caractĂšre de l'ISBN Ă 10 caractĂšres est le chiffre de contrĂŽle. ISBN Ă 10 caractĂšres est le chiffre de contrĂŽle.
MĂ©thodes de validation
- Vérifications de caractÚres autorisées
- Il faut vĂ©rifier que seuls les caractĂšres attendus soient prĂ©sents dans le champ. Par exemple, un champ numĂ©rique ne peut autoriser que les chiffres 0 Ă 9, le point dĂ©cimal et Ă©ventuellement un signe âmoinsâ ou des virgules. Une adresse e-mail peut nĂ©cessiter au moins un signe â@â et divers autres dĂ©tails structurels. Les expressions habituelles sont des moyens efficaces de mettre en place de tels contrĂŽles.
- Totaux des lots
- Il faut vĂ©rifier les dossiers manquants. Les champs numĂ©riques peuvent ĂȘtre ajoutĂ©s ensemble pour tous les enregistrements dâun lot. Le total des lots est entrĂ© et lâordinateur vĂ©rifie que le total est correct, par exemple, ajouter le champ «coĂ»t total» dâun certain nombre de transactions ensemble.
- Vérification de la cardinalité
- Il faut vĂ©rifier que ce dossier a un nombre valide dâenregistrements connexes. Par exemple, si lâenregistrement de âContactâ est classĂ© comme âClientâ, il doit avoir au moins un âOrdreâ associĂ© (CardinalitĂ© 0). Sâil nâexiste pas dâenregistrement « Client », il doit ĂȘtre remplacĂ© par « graine » ou la commande doit ĂȘtre crĂ©Ă©e. Ce type de rĂšgle peut ĂȘtre complexifiĂ© par des conditions supplĂ©mentaires. Par exemple, si lâenregistrement des contacts dans la base de donnĂ©es de paiement est marquĂ© comme « ancien employĂ© », alors ce dossier ne doit plus contenir de paiements salariaux associĂ©s Ă cet employĂ© une fois la date de son licenciement enregistrĂ©. (CardinalitĂ© = 0).
- VĂ©rifier les chiffres
- Cela est utile Ă la gestion des donnĂ©es numĂ©riques. Un chiffre supplĂ©mentaire est ajoutĂ© Ă un nombre qui est calculĂ© Ă partir dâun jeu de chiffres. Lâordinateur vĂ©rifie ce calcul lorsque les donnĂ©es sont saisies. Par exemple, le dernier chiffre de lâISBN dâun livre est un chiffre dĂ©terminĂ© au modulo 10 prĂšs. [3]
- Vérifications de cohérence
- Il faut vĂ©rifier les champs pour sâassurer que les donnĂ©es dans ces champs correspondent, par exemple, Si titre - "Mr.", puis Genre -"M".
- Totaux de contrĂŽle
- Il sâagit dâun total fait sur un ou plusieurs champs numĂ©riques qui apparaĂźt dans chaque enregistrement. Il sâagit dâun total significatif, par exemple, ajouter le paiement total pour un certain nombre de clients
- Vérifications de cohérence inter-systÚmes
- Il faut comparer les donnĂ©es dans diffĂ©rents systĂšmes pour sâassurer quâelles soient cohĂ©rentes. Par exemple, lâadresse dâun client ayant le mĂȘme id est la mĂȘme dans les deux systĂšmes. Les donnĂ©es peuvent ĂȘtre reprĂ©sentĂ©es diffĂ©remment dans diffĂ©rents systĂšmes et peuvent devoir ĂȘtre transformĂ©es en un format commun Ă comparer. Par exemple, un systĂšme peut stocker le nom du client dans un champ nom unique comme «Doe, John Q», tandis quâun autre dans trois domaines diffĂ©rents: First_Name (John), Last_Name (Doe) et Middle_Name (QualitĂ©); pour comparer les deux, le moteur de validation aurait transformĂ© les donnĂ©es du deuxiĂšme systĂšme pour correspondre aux donnĂ©es du premier, par exemple, en utilisant SQL: Last_Name ', ' || First_Name substr(Middle_Name, 1, 1) convertirait les donnĂ©es du deuxiĂšme systĂšme pour ressembler aux donnĂ©es du premier 'Doe, John Q'
- Vérification du type de données
- VĂ©rifie les types de donnĂ©es dâentrĂ©e et dĂ©livre un message dâerreur si ces donnĂ©es dâentrĂ©e ne correspondent pas au type de donnĂ©es choisies. Exemple : « Dans un systĂšme dâentrĂ©e acceptant les donnĂ©es numĂ©riques, si la lettre âOâ est remplacĂ©e par le nombre zĂ©ro « 0 », un message dâerreur sâaffichera pour annoncer lâerreur.
- VĂ©rification de l'existence du fichier
- Vérifie que certains dossiers portant un nom spécifique existent. Cette vérification est essentielle pour les programmes qui utilisent la gestion des fichiers.
- 'VĂ©rification du format ou des illustrations
- Il faut vĂ©rifier que la donnĂ©e est un dans un format spĂ©cifique (modĂšle). Par exemple, les dates nâont pas forcĂ©ment Ă ĂȘtre sous le format JJ/MM/AAAA. Les expressions rĂ©guliĂšres devraient ĂȘtre considĂ©rĂ© pour ce type de validation.
- Totaux de hachage
- Câest un total effectuĂ© sur un ou plusieurs champs numĂ©riques qui apparaĂźt dans chaque enregistrement. Ceci nâa pas lieu dâexister, par exemple, câest comme si nous additionnons les numĂ©ros de tĂ©lĂ©phone entre eux.
- VĂ©rification des limites
- Contrairement aux contrĂŽles de portĂ©e, les donnĂ©es sont vĂ©rifiĂ©es pour une limite, haute ou basse, exemple, les datas ne doit ĂȘtre plus grande que 2 (â€2).
- VĂ©rification logique
- Il faut vĂ©rifier que les entrĂ©es ne comportent pas dâerreur logique, exemple, la valeur dâentrĂ©e ne doit pas ĂȘtre Ă©gale Ă 0 si celle-ci divise un autre nombre (calcul impossible).
- Vérification de présence
- Elle a pour but de vĂ©rifier que les datas importantes sont rĂ©ellement prĂ©sentes et non oubliĂ©es par lâutilisateur, exemple, permet de vĂ©rifier que le numĂ©ro de tĂ©lĂ©phone des clients soit bien prĂ©sent dans la base de donnĂ©es.
- VĂ©rification des intervalles
- Elle a pour but de vĂ©rifier que les donnĂ©es appartiennent bien Ă un intervalle prĂ©dĂ©fini. Exemple, le mois de naissance dâune personne ne peut ĂȘtre supĂ©rieur Ă 12.
- Intégrité référentielle
- Prenons deux tables appartenant au mĂȘme systĂšme dâune base de donnĂ©es, les donnĂ©es de ces deux tables peuvent ĂȘtre reliĂ© grĂące Ă des clĂ©s dites primaires ou secondaires. Si les valeurs des clĂ©s primaires ne sont pas contraintes par le mĂ©canisme interne de la base de donnĂ©es, [4],alors celui-ci devra ĂȘtre validĂ©. La validation de la clĂ© Ă©trangĂšre permet de vĂ©rifier que les tables rĂ©fĂ©rencĂ©es doivent toujours ĂȘtre rĂ©fĂ©rĂ© Ă une ligne valide dans la table rĂ©fĂ©rencĂ©e. [5]
- VĂ©rification de l'orthographe et de la grammaire
- Il faut toujours penser Ă vĂ©rifier s'il n'y a pas de fautes dâorthographe et de grammaire.
- VĂ©rification de lâunicitĂ©
- Ceci permet de vĂ©rifier que chaque valeur est unique. Cela peut ĂȘtre appliquĂ© Ă plusieurs domaine de valeur (exemple : adresse, Nom, PrĂ©nom).
- VĂ©rification de la table
- La table de vĂ©rification prend la donnĂ©e dâentrĂ©e compare celle-ci Ă une liste de valeur dâentrĂ©e valide. Les valeurs de cette liste sont stockĂ©es dans une table de base de donnĂ©es.
Actions de post-validation
- Mesures d'exécution
- Les mesures dâexĂ©cution rejettent gĂ©nĂ©ralement la demande de saisie de donnĂ©es et exigent que la personne entrant les donnĂ©es apporte une modification Ă ces donnĂ©es afin de les rendre conformes. Ceci est plus appropriĂ© pour une utilisation interactive, oĂč une personne rĂ©elle doit elle-mĂȘme entrer des donnĂ©es. Il fonctionne Ă©galement bien pour le tĂ©lĂ©chargement par lots, oĂč une entrĂ©e de fichier peut ĂȘtre rejetĂ©e et un ensemble de messages renvoyĂ©s Ă la source ayant entrĂ© les donnĂ©es pour expliquer pourquoi les donnĂ©es ont Ă©tĂ© rejetĂ©es. Une autre forme de mesures dâexĂ©cution consiste Ă modifier automatiquement les donnĂ©es et Ă enregistrer une version conforme au lieu de la version originale. Ceci est le plus appropriĂ© pour le changement cosmĂ©tique. Par exemple, la conversion dâune entrĂ©e [all-caps] Ă une entrĂ©e [Pascal-case] nâa pas besoin de lâutilisateur. Un recours inappropriĂ© Ă lâexĂ©cution automatique se ferait dans les cas oĂč cette exĂ©cution entraĂźne la perte de renseignements commerciaux. Par exemple, enregistrer un commentaire tronquĂ© si la longueur est plus longue que prĂ©vu. Ce nâest gĂ©nĂ©ralement pas une bonne chose car il peut entraĂźner la perte de donnĂ©es importantes.
- Action de consultation
- Les actions de consultation permettent gĂ©nĂ©ralement de saisir les donnĂ©es inchangĂ©es, mais envoient un message Ă lâutilisateur en indiquant les problĂšmes de validation rencontrĂ©s.Ceci convient le mieux aux systĂšmes non interactifs, aux systĂšmes oĂč le changement nâest pas critique pour lâentreprise, au nettoyage des Ă©tapes des donnĂ©es existantes et aux Ă©tapes de vĂ©rification dâun processus dâentrĂ©e.
- Action de vérification
- Les actions de vĂ©rification sont des cas particuliers dâactions de consultation. Dans ce cas, lâutilisateur est invitĂ© Ă vĂ©rifier que ses donnĂ©es sont celles quâil voudrait vraiment entrer. Ici, lâĂ©tape de contrĂŽle suggĂšre une alternative (par exemple, une vĂ©rification de votre adresse postale renvoie une façon diffĂ©rente de formater cette adresse ou suggĂšre une adresse diffĂ©rente en mĂȘme temps).Il est souhaitable dans ce cas, de donner Ă lâutilisateur la possibilitĂ© dâaccepter la recommandation ou de garder la version dĂ©jĂ enregistrĂ©e. Il ne sâagit pas dâun processus de validation strict et est utile pour mettre Ă jour les adresses Ă un nouvel emplacement ou Ă un emplacement qui nâest pas encore pris en charge par les bases de donnĂ©es de validation.
- Journal de validation
- MĂȘme dans les cas oĂč la validation des donnĂ©es nâa pas trouvĂ© de problĂšmes, fournir un journal des validations qui ont Ă©tĂ© effectuĂ©es et leurs rĂ©sultats est important. Cela permet d'avoir un suivi et est utile pour identifier les vĂ©rifications de validation de donnĂ©es manquantes en cas de problĂšmes de donnĂ©es (donnĂ©e manquante, mal orthographiĂ©e) et dans lâamĂ©lioration du systĂšme de validation.
Validation et sécurité
Les erreurs et oublis lors de la validation de donnĂ©es peuvent entraĂźner une faille dans le systĂšme de sĂ©curitĂ©, menant Ă une corruption des donnĂ©es ou Ă une vulnĂ©rabilitĂ© de sĂ©curitĂ©[7]. La validation des donnĂ©es vĂ©rifie que les donnĂ©es sont adaptĂ©es Ă leur destination[8], valides, raisonnables et sĂ©curisĂ©es avant d'ĂȘtre traitĂ©es.
Voir Ă©galement
Références
- (en) Michael SchÀfer, « Methodology for Data Validation 1.0 (Handbook), revised edition June 2016 », sur CROS - European Commission, (consulté le )
- Mahesh Chand et David Talbot, « Data Components in Visual Studio .NET », dans Applied ADO.NET: Building Data-Driven Solutions, Apress, (ISBN 978-1-59059-073-7, lire en ligne), p. 33â71
- Maydanchik, Arkady., Data quality assessment, Technics Publications, , 336 p. (ISBN 978-1-63462-047-5 et 1-63462-047-X, OCLC 648411341, lire en ligne)>
- (en) R. Clements, « Comments on RFC 580: Machine readable protocols », sur tools.ietf.org (consulté le )
- « Independent Submissions to the RFC Editor », RFC Editor,â (lire en ligne, consultĂ© le )
- « RFC Errata Report » RFC Editor » (consulté le )
- « Chapter 10. Data Validation », sur www.cgisecurity.com
- (en) « More efficient data validation with Spotless », sur spotlessdata.com (consulté le )
Liens externes
- Validation des données, OWASP
- Validation des entrées, OWASP Cheat Sheet Series, github.com