J'ai récemment dû régler Access-Control-Allow-Origin
a *
afin de pouvoir effectuer des appels AJAX inter-sous-domaines. J'ai l'impression que cela pourrait poser un problème de sécurité. Quels sont les risques auxquels je m'expose si je conserve ce paramètre ?
Réponse
Trop de publicités?Dans le scénario où le serveur tente de désactiver complètement le CORS en définissant les en-têtes ci-dessous.
-
Contrôle d'accès - Autoriser l'origine (Access-Control-Allow-Origin) : * (indique au navigateur que le serveur accepte les demandes intersites de toute ORIGINE)
-
Access-Control-Allow-Credentials : true (indique au navigateur que les contrôles croisés sont autorisés). site peuvent envoyer des cookies)
Il existe un dispositif de sécurité implémenté dans les navigateurs qui entraînera l'erreur suivante
"Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’"
Ainsi, dans la plupart des cas, le fait de définir "Access-Control-Allow-Origin" comme suit *
ne sera pas un problème. Cependant, pour se protéger contre les attaques, le serveur peut maintenir une liste des origines autorisées et, chaque fois qu'il reçoit une demande d'origine croisée, il peut valider l'en-tête ORIGIN par rapport à la liste des origines autorisées, puis renvoyer la même chose dans l'en-tête Access-Control-Allow-Origin.
Comme l'en-tête ORIGIN ne peut pas être modifié par le javascript exécuté sur le navigateur, le site malveillant ne pourra pas l'usurper.
- Réponses précédentes
- Plus de réponses