Comprendre le mécanisme
La politique de même origine borne plusieurs accès entre documents ou ressources d’origines différentes. Elle protège notamment certaines lectures et interactions, mais n’interdit pas uniformément tout envoi interorigine. Une image distante, une navigation ou un formulaire peuvent encore produire du trafic dans les conditions prévues par le navigateur. Ce modèle explique pourquoi l’absence d’une permission de lecture CORS ne prouve pas qu’une action serveur n’a pas été déclenchée.
Raisonner et vérifier
Construisez votre modèle de menace avec deux questions distinctes : la demande part-elle, et le script peut-il exploiter la réponse ? Un serveur doit autoriser les mutations même si la page appelante ne pourra pas lire leur résultat. Les mécanismes CSRF, l’authentification et la politique de cookies complètent cette frontière. Testez avec deux origines de laboratoire plutôt qu’une page unique.
Frontière de lecture
La SOP limite certains accès entre origines. Lecture et émission de requête ont des règles distinctes. La SOP limite certains accès entre origines depuis le navigateur. Elle ne constitue pas une authentification du client ni une interdiction universelle pour les demandes qui atteignent le serveur.
Understand this common mistake
La SOP interdit tout envoi inter-origines.
Lecture et émission de requête ont des règles distinctes.
Ressource intégrée
Une image externe peut être demandée sans lecture libre du contenu. Chargement et exposition au script ne sont pas équivalents. Une image externe peut être chargée sans donner au script une lecture libre de son contenu. Distinguez déclenchement réseau, affichage et accès programmatique aux données de la réponse.
Understand this common mistake
Une requête d’image prouve l’accès JavaScript à tous ses octets.
Chargement et exposition au script ne sont pas équivalents.
Formulaire externe
Un formulaire peut déclencher une requête inter-origines. Le serveur doit protéger les mutations pertinentes. Un formulaire hébergé ailleurs peut envoyer une demande vers votre service selon les règles navigateur. Si une identité est jointe, l’effet doit être contrôlé même lorsque la réponse reste illisible au site initiateur.
Understand this common mistake
La SOP suffit à empêcher tout CSRF.
Le serveur doit protéger les mutations pertinentes.
Partage CORS
CORS peut autoriser certaines lectures contrôlées. L’autorisation porte sur un contrat précis de partage. CORS peut autoriser certaines lectures que la politique d’origine limiterait autrement. Cette permission est évaluée par le navigateur et ne remplace pas les contrôles serveur sur acteur et ressource.
Understand this common mistake
CORS désactive toutes les protections du navigateur.
L’autorisation porte sur un contrat précis de partage.
Client serveur
Un client serveur n’est pas régi comme un script navigateur par la SOP. Les clients directs demandent des contrôles serveur. Un script curl ou un backend peut contacter l’API sans appliquer la SOP du navigateur. Protégez donc les données par une authentification et des règles d’accès réelles côté serveur.
Understand this common mistake
La SOP est le pare-feu de toutes les API clientes.
Les clients directs demandent des contrôles serveur.
Contrôle API
L’authentification doit être vérifiée côté API. Une politique de lecture n’établit pas l’identité. L’API doit vérifier credentials et droits sur chaque opération sensible. Le fait qu’un frontend soit déployé sur une origine connue ne rend pas toutes les demandes reçues authentiques ou autorisées.
Understand this common mistake
Bloquer une lecture navigateur authentifie l’émetteur.
Une politique de lecture n’établit pas l’identité.
Frames
Les frames conservent des frontières d’accès. L’intégration ne fusionne pas automatiquement les origines. Un document intégré depuis une autre origine conserve des restrictions d’accès. N’en déduisez pas qu’il ne peut pas afficher une interface trompeuse ; le framing et le clickjacking demandent aussi une politique.
Understand this common mistake
Toute page intégrée devient du code de la même origine.
L’intégration ne fusionne pas automatiquement les origines.
XSS locale
Une XSS de même origine peut agir dans le contexte de la page. Le script hostile peut bénéficier du contexte compromis. Une XSS s’exécute dans le contexte de l’origine compromise et peut agir avec ses capacités. La SOP ne protège pas cette page contre un code hostile déjà exécuté dans son propre périmètre.
Understand this common mistake
La SOP neutralise tout script injecté de même origine.
Le script hostile peut bénéficier du contexte compromis.
Mesures séparées
Les tests doivent distinguer réponse envoyée et réponse lisible. Le navigateur peut masquer une réponse déjà produite. Dans un laboratoire, observez le journal serveur puis la tentative de lecture JavaScript. Une erreur CORS dans la console peut coexister avec une demande reçue et un effet déjà produit.
Understand this common mistake
Une erreur CORS prouve qu’aucune requête n’est partie.
Le navigateur peut masquer une réponse déjà produite.
Autorisation objet
La permission sur l’objet reste une règle serveur. Le modèle du navigateur ne connaît pas ces règles métier. Même une lecture techniquement autorisée entre origines doit respecter les droits de l’acteur. Essayez un identifiant appartenant à un autre compte et vérifiez le refus sans fuite de contenu.
Understand this common mistake
La SOP valide automatiquement la propriété métier.
Le modèle du navigateur ne connaît pas ces règles métier.
Atelier guidé : lire, expliquer et vérifier le code
<form method="post" action="https://booking.example.test/lab/cancel">
<input name="reservation" value="42">
</form>
<!-- Formulaire sur une autre origine ; le serveur doit appliquer ses contrôles. --> Le formulaire cross-origin peut provoquer une demande sans offrir au site tiers la lecture de sa réponse. Il faut donc protéger l’annulation avant son effet, avec les contrôles adaptés au contexte de session. Testez séparément réception de la demande, décision serveur et visibilité de la réponse.
Le serveur doit vérifier sa défense CSRF. Un effet doit être protégé même si la réponse reste illisible au script tiers. La SOP n’est pas une interdiction universelle d’émission. Les formulaires peuvent soumettre des données.
Travail pratique : Créez deux origines locales et comparez chargement d’image, navigation et lecture par fetch. Sur B, utilisez un endpoint sans mutation.
Critères de correction : Relevez les requêtes reçues puis les accès possibles depuis le script. Classez les résultats par mécanisme et gardez les mutations derrière une politique serveur indépendante de l’accès à la réponse.
Worked example
Origine A : page et script
Origine B : ressource distante
Observation 1 : demande reçue par B
Observation 2 : lecture permise ou refusée dans ALes deux observations peuvent diverger. Le refus de lecture dans A n’annule pas automatiquement un effet déjà produit dans B.
Practical exercise
Créez deux origines locales et comparez chargement d’image, navigation et lecture par fetch. Sur B, utilisez un endpoint sans mutation.
View a suggested solution
Relevez les requêtes reçues puis les accès possibles depuis le script. Classez les résultats par mécanisme et gardez les mutations derrière une politique serveur indépendante de l’accès à la réponse.
Verification checklist
- Séparer émission et lecture.
- Ne pas présenter SOP comme une autorisation.
- Tester avec deux origines distinctes.
Knowledge check
Related lesson: 12. Same-origin policy : lecture et envoi ↗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 →This records your own progress and does not certify mastery. Complete the exercise before moving on.
