< RETOUR AU LAB

CORS : Cross-Origin Resource Sharing

Le CORS est un mécanisme de sécurité qui permet à un serveur d'indiquer "Qui a le droit de lire mes données ?". Par défaut, un navigateur applique la règle du Same-Origin Policy (SOP) : le site A ne peut pas lire les données du site B.

Comment ça marche ?

[ SITE ATTAQUANT ] ---(Requête AJAX)---> [ TA BANQUE ]
|
v
[ NAVIGATEUR ] <--- "Est-ce que j'ai le droit ?" ---

Si la banque répond avec cet en-tête permissif :

Access-Control-Allow-Origin: *

Alors TOUT LE MONDE (y compris les sites pirates) peut lire les réponses de l'API.

L'Attaque (Démonstration)

Dans ce labo, nous avons simulé cette faille.

  1. La "Cyber Bank" possède une API privée (?api=true).
  2. Le développeur a mis Access-Control-Allow-Origin: * par flemme.
  3. Le site "Evil Corp" (ouvert dans un autre onglet) envoie une requête JavaScript vers la banque.
  4. Comme le HEADER autorise tout (*), le navigateur laisse le site Evil lire le JSON contenant ta clé API.

IMPACT : Vol de données confidentielles (Emails, Clés API, Données personnelles) si l'utilisateur est authentifié.

Comment se protéger ?

Ne jamais utiliser * si des données sensibles sont échangées.

Préférez une liste blanche explicite :

Access-Control-Allow-Origin: https://mon-site-partenaire.com

Si aucun partage n'est nécessaire, ne mettez aucun en-tête CORS (la sécurité par défaut s'appliquera).