← HTTP — sécurité avancée, 40 leçons de cours

Module 2 / 40 · 90 min

02. Méthodes et sémantique des opérations

Choisir une méthode selon le contrat et non selon la commodité du formulaire.

Lessons, exercises and questions in this path are in French. The interface follows the site language.

Your progress will appear here when JavaScript is active.

Progress and best score are stored only in this browser. No account is needed; clearing browser data removes them. Module times are estimates including exercises.

Comprendre le mécanisme

GET demande une représentation ; il n’est pas conçu pour déclencher une mutation métier. POST soumet un traitement selon le contrat de la ressource. PUT vise un remplacement dans le cadre défini et DELETE une suppression de l’association à la ressource ciblée. La signification d’une méthode n’implique pas que toute réponse soit identique ni que chaque opération soit autorisée. La sécurité sémantique d’une méthode porte sur l’effet demandé ; un journal technique peut évoluer lors d’une lecture.

Raisonner et vérifier

Définissez une table des opérations avant les routes. Un crawler, un préchargement ou un lien partagé peut provoquer un GET sans intention de mutation de l’utilisateur. Restreindre les méthodes au routeur évite certains déclenchements accidentels, mais ne remplace ni l’identité ni l’autorisation sur l’objet. Testez aussi HEAD et OPTIONS selon votre infrastructure, plutôt que supposer que leur comportement est identique à toutes les autres méthodes.

Lecture sûre

GET demande une lecture selon sa sémantique. Un préchargement peut déclencher une lecture sans intention de mutation. Une annulation déclenchée par GET peut être activée par crawler, préchargement ou visite involontaire. Placez les mutations derrière une méthode et un contrat adaptés, avec autorisation et protection CSRF lorsque nécessaire.

Understand this common mistake

GET convient à une annulation métier demandée.

Un préchargement peut déclencher une lecture sans intention de mutation.

Soumission POST

POST peut soumettre une création. Le verbe ne fournit pas une déduplication durable. POST exprime une soumission au traitement de la ressource. Il ne promet pas automatiquement l’unicité d’un effet ; une création sensible doit définir sa stratégie de déduplication et de reprise.

Understand this common mistake

POST garantit automatiquement l’absence de doublon.

Le verbe ne fournit pas une déduplication durable.

Idempotence PUT

PUT possède une sémantique idempotente. La propriété concerne l’effet intentionnel des répétitions. L’effet intentionnel d’un PUT répété identique est le même que celui d’un seul. Les journaux peuvent compter plusieurs demandes ; cette sémantique ne signifie pas que chaque réponse sera identique.

Understand this common mistake

Idempotent signifie réponses toujours identiques.

La propriété concerne l’effet intentionnel des répétitions.

DELETE répété

DELETE répété peut constater une absence. Effet et représentation de réponse sont distincts. Après suppression, un second DELETE peut constater l’absence et retourner un autre statut. L’état final peut rester identique : distinguez effet métier et représentation du résultat de chaque tentative.

Understand this common mistake

Un second DELETE doit reproduire exactement le premier statut.

Effet et représentation de réponse sont distincts.

HEAD

HEAD ne transporte pas de contenu de réponse. HEAD décrit la réponse sans son contenu. HEAD permet d’obtenir les métadonnées d’une représentation sans son contenu de réponse. Le traitement peut néanmoins avoir un coût serveur ; ne le considérez pas automatiquement comme gratuit ou non journalisé.

Understand this common mistake

HEAD doit renvoyer intégralement le corps de GET.

HEAD décrit la réponse sans son contenu.

OPTIONS

OPTIONS peut décrire des capacités de communication. Découverte protocolaire et autorisation sont distinctes. Une réponse OPTIONS peut renseigner les capacités ou participer à un preflight. Elle ne doit pas être interprétée comme une permission métier générale pour un utilisateur ou une ressource donnée.

Understand this common mistake

OPTIONS donne automatiquement des droits métier.

Découverte protocolaire et autorisation sont distinctes.

Restriction de route

Le routeur peut restreindre les méthodes. Le contrôle de méthode ne décide pas des droits. Déclarez les méthodes acceptées et testez une autre méthode sur le même chemin. Ce contrôle réduit les appels hors contrat mais ne prouve pas que l’acteur possède le droit d’annuler une réservation.

Understand this common mistake

Restreindre à POST prouve la propriété de l’objet.

Le contrôle de méthode ne décide pas des droits.

Effets accessoires

Une méthode sûre peut produire un journal technique. La sûreté concerne l’effet métier demandé. Une méthode sûre peut écrire un journal ou produire des métriques. L’exigence porte sur l’absence de mutation métier demandée implicitement, pas sur l’interdiction de toute activité interne du serveur.

Understand this common mistake

Une méthode sûre interdit tout journal technique.

La sûreté concerne l’effet métier demandé.

Client libre

Un client direct peut ignorer les boutons affichés. L’interface ne constitue pas la frontière d’accès. Le visiteur n’est pas limité aux boutons de l’interface. Il peut construire POST, DELETE ou un chemin différent ; le serveur doit vérifier chaque demande selon ses propres règles.

Understand this common mistake

Masquer un bouton interdit la méthode côté serveur.

L’interface ne constitue pas la frontière d’accès.

Rejet et état

Tester une méthode refusée doit vérifier le non-effet. Un contrôle trop tardif peut laisser un effet interdit. Après une méthode refusée, vérifiez statut et état durable. Une réponse 405 produite après une mutation ne satisfait pas la frontière attendue, même si l’interface n’affiche aucun succès.

Understand this common mistake

Un statut de refus suffit même après mutation.

Un contrôle trop tardif peut laisser un effet interdit.

Atelier guidé : lire, expliquer et vérifier le code

GET /lab/reservations/42/cancel HTTP/1.1
Host: booking.example.test

Contrat du laboratoire : cette requête annule réellement la réservation.

Le contrat précise que le GET annule réellement une réservation. Le défaut concerne donc sa sémantique, pas seulement son nom de chemin. Déplacez la mutation vers un parcours explicite puis vérifiez méthodes refusées, autorisation sur l’objet et absence d’effet en cas de rejet.

Le verbe est précisément prévu pour une lecture sûre. Le chemin ne prouve pas les droits. Le canal ne supprime pas l’effet métier. Crawlers et préchargements peuvent demander un GET sans cette intention.

Travail pratique : Établissez les méthodes d’un portail de réservation puis essayez une consultation et une annulation avec les méthodes autorisées et refusées.

Critères de correction : Ajoutez des tests de routage pour les méthodes incorrectes et contrôlez l’absence d’effet de bord. Pour une requête valide, testez séparément acteur non autorisé, réservation inexistante et transition métier interdite.

Worked example

GET /reservations/42        → consulter
POST /reservations         → créer selon un contrat
POST /reservations/42/cancel → demander une annulation

La dernière route est un choix de conception possible. Son serveur doit encore vérifier droits, état métier et répétitions.

Practical exercise

Établissez les méthodes d’un portail de réservation puis essayez une consultation et une annulation avec les méthodes autorisées et refusées.

View a suggested solution

Ajoutez des tests de routage pour les méthodes incorrectes et contrôlez l’absence d’effet de bord. Pour une requête valide, testez séparément acteur non autorisé, réservation inexistante et transition métier interdite.

Verification checklist

  • Aucune mutation métier demandée par GET.
  • Méthodes restreintes côté serveur.
  • Autorisation indépendante de la méthode.

Knowledge check

Related lesson: 02. Méthodes et sémantique des opérations ↗
Pourquoi éviter une annulation métier déclenchée par GET ?

Reference documentation ↗

Module validation

101 questions, local practice target of 75%. Suggested duration of 150 minutes, with no enforced deadline. Questions and choices are shuffled; corrections appear after submission. The quick lesson check and the final course exam remain separate exercises.

Start or resume the 101 questions →