web-dev-qa-db-fra.com

Quel est l'intérêt de restreindre une clé API Google par un référent HTTP?

Si quelqu'un possède la clé et un référent valide, il peut utiliser la clé API de n'importe quel client tant que l'en-tête du référent défini, n'est-ce pas?

Cela vaut-il donc la peine d'utiliser cette restriction?

20
ryan

Toutes les mesures de sécurité sont des compromis. Le coût du contrôle vaut-il plus ou moins que la valeur de ce qui est protégé, et combien de travail supplémentaire cela oblige-t-il à faire?.

Un verrou sur vos bagages peut empêcher un voleur occasionnel d'ouvrir votre sac pour attraper quelque chose, mais cela n'empêchera pas quelqu'un de voler votre sac. Mais le coût est faible, c'est donc un contrôle de sécurité toujours utile.

Donc, juste parce qu'un agent malveillant pourrait copier l'en-tête du référent, il peut ne pas avoir le temps ni l'envie de le faire. Pensez à un en-tête de référence valide comme un bracelet de concert. Pouvez-vous les forger ou vous faufiler autour du garde pour vérifier les bracelets? Bien sûr que vous le pouvez, mais cela ne rend pas le groupe inutile.

Cela augmente le coût pour l'attaquant.

De même, votre application standard, non modifiée et bien comportée dira la vérité sur la dernière page dont elle est issue, puis se verra refuser l'accès à l'API. Peut-être que quelqu'un qui essaie d'abuser de votre service ne sait pas que vous vérifiez les en-têtes de référent sur le serveur et abandonnera.

Ainsi, en réponse à la question de OP "valable" est un jugement de valeur que vous seul pouvez faire. Combien d'efforts vous faut-il pour vérifier le référent? Probablement pas beaucoup. Quelle est la valeur de la protection de l'utilisation de votre clé API? Probablement plus. Est-ce que cette quantité d'effort de votre part vaut le ralentisseur que vous placerez sur le chemin de l'attaquant?

Ce dernier est votre appel.

20
JesseM

Quel est l'intérêt de restreindre une clé API Google par un référent HTTP?

Une application Web ne peut pas facilement forger son référent lors de l'émission de demandes. Par conséquent, restreindre les référents autorisés à une liste spécifique empêche d'autres sites Web d'utiliser votre clé API pour leurs propres services Web et ainsi de toucher votre quota d'API. C'est une fonctionnalité utile dont vous devriez profiter.

Cependant, une application capable de définir ses propres en-têtes de référent ne sera évidemment pas affectée par cette restriction. Il est uniquement destiné à protéger les applications Web.

5
Arminius

Le "référent" est défini par le navigateur pour contenir l'adresse du site appelant, donc si vous limitez l'accès à l'API Google en autorisant uniquement l'adresse de votre site Web, vous empêchez d'autres personnes d'utiliser votre clé pour effectuer des appels API depuis leur sites, car le référent ne correspondrait pas.

Quelqu'un qui "a le référent valide" ne peut normalement pas l'utiliser sur son propre site car l'en-tête du référent ne peut pas être modifié par programme dans le navigateur . Cela empêche les gens de simplement voler votre clé et de l'ajouter à leur code HTML.

Mais le référent peut sûrement être changé sur le serveur , où vous êtes libre de changer quoi que ce soit dans la demande. Ainsi, un pirate pourrait mettre en place une sorte de proxy qui agit comme un "homme au milieu" recevant toutes les demandes d'API de son site Web et les transmettant à Google après avoir changé le référent en ce qui est autorisé par la clé volée.

Je suis sûr que Google en est conscient et a mis en place d'autres contre-mesures, comme vérifier le nombre d'appels provenant de la même adresse IP. Mais alors, le pirate pourrait utiliser des centaines de procurations bon marché pour distribuer les appels et contourner le chèque.

Donc, en conclusion, l'en-tête du référent est un moyen intelligent et facile de protéger votre clé API tant que personne ne choisit de consacrer des efforts à contourner cette protection. Et avec la récente augmentation du coût de l'API, je vois que cela risque de se produire. Il suffit d'espérer qu'ils ne vous volent pas.

4
xtian

Si vous autorisez quelqu'un à utiliser votre clé API client, il n'y a fondamentalement aucun moyen d'empêcher une utilisation abusive. Cela rend juste assez ennuyeux pour dissuader certaines personnes. Cela ne fait pas de mal de l'activer, mais ne présumez pas que cela arrêtera toute personne déterminée. C'est un peu comme des mesures anti-modding dans les jeux vidéo en ligne.

Opinion: J'ai vu beaucoup d'endroits, même Google Cloud Platform, ne pas être assez clair sur ce que cette restriction de référence HTTP garantit: pas beaucoup.

1
sudo