Tu construis ton appli, le navigateur lance une erreur rouge de CORS, tu cherches sur un forum et tu copies le correctif qui promet que tout va marcher. C'est en général le pire possible. Comprenons ce qu'est le CORS et pourquoi ce raccourci est dangereux.
Ce qu'est vraiment le CORS
Par défaut, le navigateur ne laisse pas site-a.com lire la réponse d'une API sur site-b.com. C'est la politique de même origine, et elle protège tes utilisateurs : elle empêche un onglet malveillant de lire les données d'un autre onglet où tu es connecté. Le CORS est le mécanisme par lequel ton serveur dit ces origines précises sont autorisées, via l'en-tête Access-Control-Allow-Origin.
L'erreur qui casse tout
Le motif dangereux consiste à renvoyer n'importe quelle origine qui arrive et, en plus, à autoriser les identifiants :
Access-Control-Allow-Originavec la valeur de l'origine qui demande (réflexion dynamique)- couplé à
Access-Control-Allow-Credentials: true
Avec cette combinaison, n'importe quel site que ton utilisateur visite peut appeler ton API avec les cookies de session de l'utilisateur et lire la réponse. Autrement dit, un site quelconque peut extraire les données privées de ton utilisateur sans qu'il s'en aperçoive. Le joker * est moins grave parce que le navigateur interdit de le combiner avec des identifiants, mais il n'a pas non plus sa place en production.
Comment le configurer correctement
Pense défense, pas commodité :
- Tiens une allowlist d'origines autorisées et compare-la à l'exact. Ne renvoie jamais ce qui arrive sans valider.
- Active
Allow-Credentialsseulement si tu as vraiment besoin d'envoyer des cookies, et seulement pour des origines précises. - Limite les méthodes et les en-têtes à ce que tu utilises (
Allow-Methods,Allow-Headers). - Attention à inclure
nullou des sous-domaines tiers dans la liste.
Pourquoi c'est difficile à repérer
Cette faille est silencieuse : tout fonctionne, il n'y a pas d'erreur visible et l'appli a l'air saine. Tu ne le remarques que lorsque quelqu'un en abuse. C'est pourquoi il faut revoir explicitement ta configuration CORS à chaque déploiement, au lieu de te fier à pas d'erreur, donc c'est bon.
Revois ton CORS avec Scanaris
Scanaris fait un contrôle en lecture seule pour voir si ton API renvoie des origines et comment elle répond aux en-têtes CORS, sans lancer d'attaques ni toucher à tes données : il observe seulement la réponse publique. S'il trouve une configuration dangereuse, il te donne un fix prompt pour que ton IA la réécrive avec une allowlist. Scanne ton site et évite la faille que personne ne voit jusqu'à ce qu'il soit trop tard.