Validation des entrées et encodage des sorties
Validez toutes les entrées côté serveur, encodez les sorties dans le contexte approprié et empêchez les injections.
Validation des entrées et encodage des sorties est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Pourquoi la validation des entrées est importante
Les vulnérabilités par injection — SQL, commandes, LDAP, XPath et autres — surviennent lorsque des entrées non fiables sont interprétées comme du code. La validation des entrées garantit que les données respectent les types, longueurs et formats attendus avant d'être traitées, stockées ou renvoyées.
Validation par liste d'autorisation ou de refus
La validation par liste d'autorisation (liste blanche) définit ce qui est acceptable (IS) : uniquement les caractères alphanumériques, uniquement les entiers compris entre 1 et 100, uniquement les formats d'e-mail valides. La validation par liste de refus (liste noire) tente de bloquer les entrées malveillantes connues et est toujours incomplète. Préférez les listes d'autorisation.
Validation côté serveur
La validation côté client améliore l'expérience utilisateur, mais n'offre aucune sécurité — les attaquants la contournent facilement à l'aide des outils de développement du navigateur ou de curl. Validez toujours côté serveur. La validation côté client est une commodité ; côté serveur, c'est le contrôle de sécurité.
Validation des entrées pour différents types de données
Nombres : vérifiez le type et la plage. Chaînes : vérifiez la longueur et le jeu de caractères. Dates : analysez-les strictement et vérifiez la plage. Fichiers : vérifiez l'extension AND les octets magiques/le type MIME — ne faites jamais confiance à l'extension seule. URL : analysez et validez le schéma, l'hôte et les composants du chemin.
Les requêtes paramétrées empêchent les injections SQL
La conséquence la plus importante de la validation des entrées pour les bases de données est de ne jamais concaténer une entrée utilisateur dans SQL. Utilisez des requêtes paramétrées (instructions préparées), où l'entrée utilisateur est transmise comme paramètre et non interpolée dans la chaîne query.
// WRONG:
const q = "SELECT * FROM users WHERE name = '" + name + "'";
// RIGHT:
const q = "SELECT * FROM users WHERE name = $1";
await client.query(q, [name]);Contextes d'encodage des sorties
Une même chaîne exige un encodage différent selon le contexte. Corps HTML : encodez en HTML (< > &). Attribut HTML : encodage des attributs HTML. JavaScript : échappement JS. Paramètre d'URL : encodage d'URL (encodage en pourcentage). L'utilisation d'un encodage incorrect laisse des failles que les attaquants peuvent exploiter.
Encodage HTML contre XSS
N'insérez jamais directement des données utilisateur dans HTML. Utilisez un moteur ou une bibliothèque de modèles qui échappe automatiquement le HTML. Dans React, {value} est sûr ; dangerouslySetInnerHTML contourne l'échappement. Dans Django, les modèles échappent automatiquement le contenu, sauf si vous utilisez explicitement le filtre safe.
Encodage dans le contexte JavaScript
Lors de l'insertion de données dans JavaScript (par exemple, une variable initialisée avec des données utilisateur), l'encodage HTML est insuffisant. Utilisez l'encodage JSON : JSON.stringify(value). Cela empêche les données de sortir du contexte d'un littéral de chaîne JS.
Encodage des URL
Les données fournies par l'utilisateur et insérées dans des URL doivent être encodées en pourcentage à l'aide de encodeURIComponent() (JS) ou de urllib.parse.quote() (Python). Des données non encodées peuvent manipuler la structure de l'URL, ce qui entraîne des redirections ouvertes ou une traversée de chemin.
La politique de sécurité du contenu comme défense en profondeur
CSP ajoute une deuxième ligne de défense contre XSS. Une CSP stricte utilisant des valeurs nonce empêche l'exécution de scripts en ligne même si une charge utile XSS est injectée, car le navigateur refuse d'exécuter les scripts sans l'attribut nonce correct.
Prévention du XSS fondé sur le DOM
Le XSS fondé sur le DOM survient lorsque JavaScript lit des sources contrôlées par un attaquant (location.hash, document.URL, cookie) et écrit vers des puits dangereux (innerHTML, document.write, eval). Auditez tous les flux de données des API du navigateur vers les puits du DOM à l'aide d'outils d'analyse statique.
Vérification des connaissances
Pourquoi la validation des entrées côté serveur est-elle essentielle même lorsque la validation côté client est mise en œuvre ?
Résumé
La validation des entrées (listes d'autorisation, vérification des types, limites de longueur), combinée à un encodage des sorties adapté au contexte (HTML, JS, URL, paramétrage SQL), constitue la principale défense contre les attaques par injection et les attaques XSS. Les deux doivent être appliquées côté serveur, sans exception.
Questions Fréquemment Posées
La leçon « Validation des entrées et encodage des sorties » est-elle gratuite ?
Oui — le texte complet de « Validation des entrées et encodage des sorties » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Validation des entrées et encodage des sorties » ?
Validez toutes les entrées côté serveur, encodez les sorties dans le contexte approprié et empêchez les injections. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Validation des entrées et encodage des sorties » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Validation des entrées et encodage des sorties
- Gestion sécurisée des dépendances
- OWASP ASVS : norme de vérification de la sécurité des applications
- Techniques de revue de code sécurisée