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.
- La "Cyber Bank" possède une API privée (
?api=true).
- Le développeur a mis
Access-Control-Allow-Origin: * par flemme.
- Le site "Evil Corp" (ouvert dans un autre onglet) envoie une requête JavaScript vers la banque.
- 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).