N.NOTKOKO // HACK
COURS 14 / 18

Comprendre les injections et les chemins

Repérer la frontière entre une donnée et une instruction, puis expliquer pourquoi cette frontière doit être conservée.

SQLHTMLChemins
01 // COMPRENDRE

Quand une donnée devient du SQL

Une injection SQL apparaît lorsque des entrées participent à la construction du code SQL au lieu de rester des valeurs. Comprendre AND, OR et les délimiteurs de chaînes aide à lire le problème. Sur papier, une condition fausse OR vraie est vraie ; une condition fausse AND vraie est fausse. Ce raisonnement n’implique pas qu’un formulaire réel soit vulnérable. Des paramètres liés dans une requête préparée conservent la séparation entre instruction et valeur.

02 // COMPRENDRE

Quand du texte devient du HTML

Une XSS concerne l’interprétation de contenu non fiable dans le navigateur. Observe d’abord si une chaîne est affichée comme texte ou insérée comme balisage, puis identifie son contexte : texte HTML, attribut, URL ou JavaScript. L’échappement dépend de ce contexte. La démonstration inerte suivante illustre uniquement la différence d’affichage.

EXEMPLE PÉDAGOGIQUE
Entrée : <strong>bonjour</strong>
Affichage comme texte : les chevrons et balises restent visibles.
Interprétation HTML : bonjour apparaît en gras.
Comment le lire

Interpréter une balise ne prouve pas à lui seul qu’un script peut s’exécuter. Il faut distinguer injection HTML et exécution de JavaScript. Ici, aucun code n’est exécuté.

03 // COMPRENDRE

Quand un chemin sort de son dossier

La séquence .. remonte au dossier parent. Depuis /atelier/public, ../notes.txt désigne /atelier/notes.txt. Si un serveur accepte un nom de fichier utilisateur, il doit contrôler le chemin final et les droits, pas seulement rechercher une chaîne suspecte. Le même principe de séparation vaut pour le shell : évite de construire une commande système en concaténant des entrées.

04 // À TOI DE RÉFLÉCHIR

Vérifie que tu as compris.

3 questions pour mettre les idées en pratique. Réponds avec tes mots, puis vérifie chaque réponse.

La correction repère les notions attendues et certaines formulations proches. Elle reste indicative : lis aussi l’explication. Tes réponses restent dans cette page et ne sont pas enregistrées.

QUESTION 1 / 3

Une réponse courte et expliquée suffit.0 / 1200

À toi de répondre

Corrigé détaillé — question 1

Les valeurs sont liées comme des données au lieu d’être concaténées dans le code SQL. La séparation empêche leur interprétation comme des instructions dans ces emplacements paramétrés.

Exemple de réponse

Elles séparent le code des valeurs et gardent l’entrée comme une donnée.

QUESTION 2 / 3

Une réponse courte et expliquée suffit.0 / 1200

À toi de répondre

Corrigé détaillé — question 2

Non. Cela montre que du HTML est interprété. Il faut distinguer cette interprétation d’une exécution de JavaScript ; cette balise de démonstration ne contient pas de script.

Exemple de réponse

Non, cela montre une interprétation HTML, pas forcément du JavaScript.

QUESTION 3 / 3

Une réponse courte et expliquée suffit.0 / 1200

À toi de répondre

Corrigé détaillé — question 3

.. représente le dossier parent. Depuis /atelier/public, ../notes.txt mène à /atelier/notes.txt ; la résolution doit ensuite respecter les droits et le périmètre du serveur.

Exemple de réponse

Le dossier parent.

05 // À RETENIR

Le risque dépend du contexte où la donnée sera interprétée.