¿Es la clave de la API de Google una información confidencial que debe protegerse?

7

Estoy haciendo uso de la API de Google para la ubicación (en aplicaciones de Android, iOS). ¿Se puede codificar la clave? ¿O debería ser protegido? Si es sensible, ¿por qué es sensible y cómo pueden los atacantes explotar esto?

    
pregunta Ocelot 07.03.2014 - 00:03
fuente

2 respuestas

3

El SDK de Google Maps para iOS envía la clave API de la aplicación a Google de tal manera que cualquier usuario final de la aplicación puede encontrar la clave API de la aplicación mediante el uso de un proxy HTTPS. Si está desarrollando en una Mac, puede intentarlo usted mismo fácilmente usando el Charles proxy.

  1. Configura a Charles para que actúe como un proxy para clients4.google.com. En una Mac, deberá asegurarse de que está usando la "versión alternativa" con soporte de proxy SSL completo descargable desde esta página .

  2. Descargue e instale el certificado Charles SSL para dispositivos iOS visitando este enlace en su dispositivo iOS.

  3. Configure su dispositivo iOS para usar un proxy HTTP (esto está disponible en las opciones avanzadas para su red WiFi, a las que se puede acceder mediante el pequeño botón "i" al lado del nombre de su red WiFi). Establezca el servidor proxy en la dirección IP de la Mac que ejecuta la aplicación Charles y el puerto en 8888.

  4. Ejecute su (o cualquier) aplicación de iOS que use el SDK de Google Maps para iOS.

En Charles, verás que las solicitudes POST van a clients4.google.com, donde la clave API es visible como parte del cuerpo de la solicitud.

Entonces, para responder a sus preguntas:

  1. En términos de seguridad, casi no importa si usted codifica la clave. Cualquier usuario final puede obtener la clave API de los mapas de su aplicación sin tener que profundizar en la aplicación en sí. En términos de conveniencia, sería mejor obtener la clave API de mapas de su propio servidor, de modo que si / cuando necesita actualizar su clave API de mapas no necesite lanzar una nueva versión de la aplicación cliente.

  2. La clave de la API de mapas no es sensible, en el sentido de que Google no la trata como información confidencial. Y, de hecho, incluso si Google hubiera ofuscado las claves enviando (por ejemplo) un hash a su API en lugar de a la clave en sí, un usuario final determinado con un dispositivo con jailbreak y un depurador aún podría obtener su clave de API al inspeccionar el parámetro al que pasa. %código%. Por lo tanto, es cuestionable que haya algún punto en intentar tratar la clave API como información confidencial.

  3. Un atacante puede explotar la exposición de su clave de API realizando solicitudes a la API de Google Maps que parecen provenir de su aplicación. Un grupo de usuarios malintencionados podría enviar un correo basura a la API para utilizar el ancho de banda de "cortesía" de su aplicación, o para aumentar su factura de ancho de banda si tiene la facturación habilitada para la API de Google Maps. Si usted (o Google) está vigilando de cerca el uso de su ancho de banda, podría defenderse parcialmente contra tal ataque revocando y reemplazando la clave de la API de mapas cuando el uso (aparente) de la aplicación de los picos de la API de mapas.

respondido por el Aaron Golden 04.03.2015 - 05:08
fuente
2

¿Se puede codificar la clave?

¿Podrías explicar esto? Si te refieres a codificar la clave en la URL, bueno, crear una nueva clave significaría cambiarla a nivel de código. Se podría evitar cambiar esto a nivel de código.

¿Debe estar protegido?

En la mayoría de los casos, la clave, al estar aparte de la consulta de solicitud, está abierta. (Si utiliza POST en su lugar, todavía hay formas de obtener esta información). Pero, siempre que la solicitud que use su clave no provenga de su dominio (referidores HTTP), Google devolverá un error.

¿Cómo pueden los atacantes explotar esto?

Como un simple caso de uso, suponiendo que los límites por usuario no se hayan establecido correctamente, se podría lanzar un ataque de denegación de servicio utilizando la clave API accesible.

    
respondido por el katrix 07.03.2014 - 07:26
fuente

Lea otras preguntas en las etiquetas