¿Qué pasos debo seguir para proteger mi clave API de Google Maps?

96

Obtuve una clave API de Google Maps para mi dominio.

Los ejemplos proporcionados cuando obtuve mi clave muestran la clave incrustada en los parámetros de solicitud, por ejemplo:

<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>

Aprecio que el campo de referencia en las solicitudes debe coincidir con mi dominio, ¿es seguro hacer que mi clave sea visible en las etiquetas de secuencia de comandos y similares? ¿O hay otros pasos que debería tomar?

brabster
fuente

Respuestas:

92

Teniendo en cuenta que la clave debe incluirse en las <script>etiquetas de sus páginas HTML, para cargar los archivos / datos JS de los servidores de Google, no hay nada que pueda hacer:

  • debes ponerlo en tus archivos HTML
  • todos pueden echarle un vistazo a esos.

Aún así, realmente no importa: si alguien intenta usar esta clave en otro dominio que no sea el suyo, recibirá una alerta de Javascript, lo cual no es bueno para los usuarios.

Entonces :

  • No hay nada que puedas hacer ; Así es como funciona
  • Y no hay mucho de lo que debas preocuparte, diría yo.
Pascal MARTIN
fuente
5
Creo que podrías usar un proxy en tu propio sitio que usara la clave para buscar el archivo "real". Totalmente inútil, sí, pero creo que es posible.
Tim Sylvester
1
Pensé que valía la pena comprobarlo en caso de que me hubiera perdido algo. Saludos a los que respondieron.
brabster
@Tim: no estoy seguro; Supongo que el código JS en sí mismo es el nombre de dominio del sitio que muestra el mapa, y parecería normal que lo comparara, de alguna manera, con una información incluida en la clave; aún así, lo hice. No intentar. ;;; @Brabster: :-)
Pascal MARTIN
2
Es importante, por ejemplo, si queremos proteger el uso del ancho de banda de nuestra clave API. Comprueba mi solución.
Ifan Iqbal
3
y ¿qué pasa si tomo la clave api para usar en mi propia aplicación (windows / ios / android)? ¡Puedo simular la referencia y usar esta clave para mi propio propósito a su costo!
loki
21

Hay una configuración en la consola de API de Google que puede proteger el uso de ancho de banda de su API para que no lo utilice otro dominio / usuario. Puede restringir y proteger eso mediante el uso de referencia en la consola de API. API Key rechazará las solicitudes sin referencias que coincidan con sus restricciones.

Aquí hay una captura de pantalla de Google para la clave API que solo Google puede usar en sus dos dominios. ingrese la descripción de la imagen aquí

Ifan Iqbal
fuente
3
¿qué pasa con los usuarios móviles?
Muhammad Umer
Para agregar un poco, los detalles pueden estar aquí developers.google.com/maps/…
SIslam
15

Aunque esta pregunta tiene algunos años, es muy buena. Según tengo entendido, exponer las claves de API, incluso si coinciden con el dominio, podría dar lugar a un abuso. Aquí hay una publicación sobre Security Stack Exchange que cubre esto con más detalle.

Google ha publicado aquí los pasos que puede seguir para evitar posibles abusos:

Guía de prácticas recomendadas para utilizar API de forma segura: https://support.google.com/cloud/answer/6310037?hl=en

Aunque recomendaría tenerlo todo a bordo, existe un enfoque que se ocuparía del ejemplo específico que publicó Brabster y es almacenar la clave en una variable de entorno . De esta manera, todo lo que necesita hacer es sustituir la clave por una variable del lado del servidor que está almacenada dentro de su proyecto. Sin embargo, asegúrese de no enviar el archivo que almacena la clave a un repositorio público.

rjbultitude
fuente
16
También siento que esta respuesta no aborda la pregunta. La API de mapas requiere JavaScript del lado del navegador, que siempre puede leer cualquier persona que obtenga la página.
David van brink
-1

Debe utilizar el lado del servidor / back-end para proteger y manejar la clave. En mi caso, utilicé el lado del servidor Django f / w, que puede servir una llamada ajax para obtener la clave del script / db del servidor y luego pasarla a la api de Google.

SKS
fuente
4
Si su clave de API llega alguna vez al navegador, un tercero puede recuperarla.
Moose on the Loose