Nour se connecte à l'espace numérique du lycée
Exercice d'entraînement · niveau 3 (difficile) · NSI (première), chapitre 10 — Interagir sur le Web · Le partage client / serveur
Énoncé
Nour se connecte à l'espace numérique du lycée. La page d'accueil affiche « Bonjour Nour ». Voici, dans le désordre, huit étapes de ce qui s'est passé.
(a) le navigateur envoie GET /accueil, avec l'en-tete Cookie: session=8f3a
(b) le serveur repond 302 et Set-Cookie: session=8f3a
(c) Nour remplit le formulaire et clique
(d) le serveur retrouve la session 8f3a, lit le prenom en base, fabrique le HTML
(e) le navigateur enregistre le cookie
(f) le serveur compare l'empreinte du mot de passe a celle qui est en base
(g) le navigateur affiche « Bonjour Nour »
(h) le navigateur envoie POST /connexion avec pseudo et motdepasse
- Remettre les huit étapes dans l'ordre, et dire pour chacune si elle se déroule sur le client ou sur le serveur.
- Le prénom « Nour » n'est pas dans le cookie. Pourquoi serait-ce une mauvaise idée de l'y mettre ?
Corrigé
1.
| Étape | Ce qui se passe | Où | |
|---|---|---|---|
| 1 | (c) | saisie et clic | client |
| 2 | (h) | `POST /connexion` | client |
| 3 | (f) | comparaison des empreintes | serveur |
| 4 | (b) | `302` + `Set-Cookie` | serveur |
| 5 | (e) | enregistrement du cookie | client |
| 6 | (a) | `GET /accueil` + en-tête `Cookie` | client |
| 7 | (d) | session retrouvée, HTML fabriqué | serveur |
| 8 | (g) | affichage | client |
Deux requêtes, donc deux allers-retours : la connexion, puis l'accueil. C'est la redirection 302 de l'étape 4 qui déclenche la seconde — le navigateur obéit sans que Nour ait rien cliqué. Notez que l'étape 6 renvoie le cookie automatiquement : aucune ligne de JavaScript n'a été écrite pour cela.
2. Parce qu'un cookie est rangé chez le client, donc modifiable par lui. Si le serveur lisait le prénom dans le cookie, il suffirait de le changer pour se faire appeler autrement — ce qui est anodin. Mais le même raisonnement vaut pour un cookie qui porterait eleve=nour ou role=professeur : on se donnerait alors des droits en modifiant une chaîne de caractères dans son propre navigateur.
D'où la règle : le cookie de session ne contient qu'un identifiant opaque et imprévisible. Il ne dit rien ; il ne fait que désigner une session dont tout le contenu — qui vous êtes, ce que vous avez le droit de voir — reste sur le serveur.
Prolongement : c'est la même idée qu'à l'exercice précédent, appliquée à l'identité au lieu du prix. Ce que le client détient, le client peut le changer ; le serveur ne doit donc lui confier qu'une clé, jamais la réponse.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.