Quelles mesures dois-je prendre pour protéger ma clé API Google Maps?

96

J'ai obtenu une clé API Google Maps pour mon domaine.

Les exemples fournis lorsque j'ai obtenu ma clé montrent la clé intégrée dans les paramètres de la requête, par exemple:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=my-key" type="text/javascript"></script>

J'apprécie que le champ référent dans les demandes doit correspondre à mon domaine, est-il sûr de rendre ma clé visible dans les balises de script et autres? Ou dois-je prendre d'autres mesures?

brabster
la source

Réponses:

92

Étant donné que la clé doit être incluse dans les <script>balises de vos pages HTML, pour charger les fichiers / données JS à partir des serveurs de Google, vous ne pouvez rien faire:

  • vous devez le mettre dans vos fichiers HTML
  • chacun peut y jeter un œil.

Pourtant, cela n'a pas vraiment d'importance: si quelqu'un essaie d'utiliser cette clé sur un autre domaine que le vôtre, il recevra une alerte Javascript - ce qui n'est pas agréable pour les autres utilisateurs.

Alors :

  • Vous ne pouvez rien faire; c'est comme ça que ça marche
  • Et il n'y a pas grand-chose dont vous devriez vous inquiéter, je dirais.
Pascal MARTIN
la source
5
Je pense que vous pouvez utiliser un proxy sur votre propre site qui utilise la clé pour récupérer le "vrai" fichier. Totalement inutile, oui, mais je pense que c'est possible.
Tim Sylvester
1
J'ai pensé que cela valait la peine de vérifier au cas où j'aurais manqué quelque chose. Bravo à ceux qui ont répondu.
brabster le
@Tim: pas sûr; J'imagine le code JS lui-même si on vérifie le nom de domaine du site qui affiche la carte, et il semblerait normal qu'il le compare, d'une manière ou d'une autre, à une information incluse dans la clé - quand même, je l'ai fait ne pas essayer. ;;; @Brabster: :-)
Pascal MARTIN
2
C'est important par exemple si nous voulons protéger l'utilisation de la bande passante de notre clé API. Vérifiez ma solution.
Ifan Iqbal
3
et que faire si je prends la clé API pour l'utiliser dans ma propre application (Windows / iOS / Android)? Je peux simuler le référent et utiliser cette clé à mes propres fins à vos frais!
loki
21

Il existe un paramètre sur la console API Google qui peut empêcher l'utilisation de la bande passante de votre API par un autre domaine / utilisateur. Vous pouvez restreindre et protéger cela en utilisant le référent sur la console API. La clé API rejettera les demandes sans référents correspondant à vos restrictions.

Voici une capture d'écran de Google pour la clé API qui ne peut être utilisée que par Google dans ses deux domaines. entrez la description de l'image ici

Ifan Iqbal
la source
3
qu'en est-il des utilisateurs mobiles?
Muhammad Umer
Pour ajouter un peu, les détails peuvent être ici developer.google.com/maps/…
SIslam
15

Bien que cette question remonte à quelques années, elle est très bonne. Si je comprends bien, exposer les clés API, même si elles correspondent à un domaine, pourrait toujours entraîner des abus. Il y a un article sur Security Stack Exchange ici qui couvre cela plus en détail.

Les mesures que vous pouvez prendre pour éviter les abus potentiels ont été publiées par Google ici:

Guide des meilleures pratiques pour une utilisation sécurisée des API: https://support.google.com/cloud/answer/6310037?hl=fr

Bien que je recommande de prendre tout cela à bord, il existe une approche qui traiterait de l'exemple spécifique qui a été publié par Brabster et qui consiste à stocker la clé dans une variable d'environnement . De cette façon, tout ce que vous avez à faire est de remplacer la clé par une variable côté serveur qui est stockée dans votre projet. Cependant, veillez à ne pas valider le fichier qui stocke la clé dans un référentiel public.

rjbultitude
la source
16
Je pense également que cette réponse ne répond pas à la question. L'API Maps nécessite du javascript côté navigateur, qui est toujours lisible par toute personne qui récupère la page.
david van brink
-1

Vous devez utiliser le côté back-end / serveur pour protéger et gérer la clé. Dans mon cas, j'ai utilisé Django f / w côté serveur qui peut servir un appel ajax pour obtenir la clé du script serveur / db puis la transmettre à google api.

SKS
la source
4
Si votre clé API atteint un jour le navigateur, elle peut être récupérée par un tiers.
Moose on the Loose