164 votes

Quels sont les risques de sécurité liés au paramétrage de Access-Control-Allow-Origin pour accepter tous les domaines ?

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 ?

1voto

shadow0359 Points 892

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X