Nous envisageons donc d'ajouter null à l'origine autorisée. C'est mieux, car cela bloquera tout autre site web tentant de récupérer notre API, mais cela permettra à toute application mobile de la récupérer...
Si vous faites ça, vous autorisez les requêtes du code JavaScript qui s'exécute à partir de tout une origine non-http/https, ce qui inclut toute personne exécutant quelque chose à partir d'une file://
ou même data:
URL.
Ainsi, si vous utilisez une politique CORS restrictive pour des raisons de "sécurité", l'envoi de réponses avec un nom de fichier Access-Control-Allow-Origin: null
L'en-tête semble être une assez mauvaise idée.
Nous avons besoin de maintenir la sécurité de notre serveur API avec une restriction CORS : Toutes les solutions que j'ai trouvées me disent d'autoriser toutes les origines : *
mais cela constituerait un gros défaut de sécurité pour notre API.
Vous n'expliquez pas pourquoi vous avez déterminé qu'il s'agirait d'un échec de sécurité ou pourquoi vous devez avoir une politique CORS restrictive. Mais à moins que (1) votre serveur Web fonctionne dans un intranet ou derrière un autre type de pare-feu, et (2) que l'accès aux ressources soit autrement limité uniquement par l'authentification IP, alors vous ne gagnez rien à utiliser une politique CORS restrictive. Pour citer la spécification :
Configuration de base du protocole CORS sécurisé
Pour les ressources dont les données sont protégées par une authentification IP ou un pare-feu (ce qui est malheureusement encore relativement courant), l'utilisation du protocole CORS n'est pas sûre. (C'est la raison pour laquelle le protocole CORS a dû être inventé).
En revanche, l'utilisation de l'en-tête suivant est sans danger :
Access-Control-Allow-Origin: *
Même si une ressource expose des informations supplémentaires basées sur un cookie ou une authentification HTTP, l'utilisation de l'en-tête ci-dessus ne les révélera pas. Il partagera la ressource avec des API telles que XMLHttpRequest
comme il est déjà partagé avec curl
et wget
.
Ainsi, en d'autres termes, si une ressource n'est pas accessible à partir d'un appareil aléatoire connecté au web à l'aide de curl
et wget
l'en-tête susmentionné ne doit pas être inclus. Toutefois, s'il est possible d'y accéder, il est parfaitement possible de le faire.
0 votes
Je doute que vous puissiez définir null pour l'origine ? Même en conservant origin:*, il existe plusieurs moyens/API qui peuvent être utilisés pour protéger votre API.
1 votes
Je me débats avec le même problème. Avez-vous trouvé comment procéder correctement ?