Outils pour utilisateurs

Outils du site


bloc3:validation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc3:validation [2023/04/07 16:52] – supprimée - modification externe (Date inconnue) 127.0.0.1bloc3:validation [2024/10/07 10:57] (Version actuelle) admin
Ligne 1: Ligne 1:
 +====== Validation des données entrantes ======
 +Les données entrant dans une application (qu'il s'agisse de celles __saisies par un utilisateur__ interactif ou celles __envoyées__ par un procédé de transmission quel qu'il soit), sont une source de préoccupation particulière en cyber sécurité. 
 +
 +En effet, en l'absence de précautions particulières, on peut imaginer qu'un individu malveillant utilise ces entrées de données pour détourner le comportement prévu de l'application en injectant du contenu actif non envisagé par les concepteurs (injection SQL, injection de code, injection XML, etc.). De tels détournements peuvent remettre en cause la confidentialité et l'intégrité des données.
 +
 +Pour se prémunir de ce risque, il est nécessaire de procéder systématiquement à une étape de validation avant traitement. La validation pourra prendre 2 formes distinctes qui peuvent se cumuler :
 +  * contrôle de la **nature des données** par rapport à celles attendues (un email est-il un email valide ? une date est-elle une date valide ? etc.) ;
 +  * **normalisation des contenus** de manière à assainir les entrées (éliminer tout caractère inadapté, échapper des caractères à usage possiblement détournés, etc.) 
 +
 +Aujourd'hui, de nombreux outils existent sur lesquels s'appuyer pour la validation :
 +  * les différents <input type> du html5 ;
 +  * les fonctions de filtrage (**filter_input** en PHP) et d'échappement (**addslashes**, **htmlspecialchars**, **htmlentities** en PHP) ;
 +  * les expressions régulières (**Regex**) accessibles dans tous les langages ;
 +
 +<WRAP center round important 90%>
 +Considérant que le Client/Serveur est présent partout, pour maximiser la qualité du procédé, il faudra prévoir de réaliser une validation côté Client <color #ed1c24>ET</color> côté Serveur !
 +</WRAP>
 +
 +<WRAP center round tip 60%>
 +Pour ce qui est des **injections SQL**, on pourra cumuler __validation__ **et** __requêtes préparées__, sans oublier toutefois que les requêtes préparées ont un coût (supplément en temps de traitement).
 +</WRAP>
 +