¿Por qué Youtube, o cualquier otro servicio de Google, utiliza la clave de autorización vinculada a la cuenta en el URL?

6

en el pasado expiré con las herramientas de API disponibles de Google, como las de Drive y Youtube.

La forma en que funciona es después de comprar una cuenta de deveopler, se le conceden muchos de los servicios de Google a través de api's, que para usar, necesita una clave uniuqe api que esté vinculada a su cuenta y adjuntada a cada una de ellas. la url de solicitudes.

Por ejemplo:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=some.playlist.id&key={YOUR_API_KEY}

Al principio, pensé que era una buena idea usar la tecla - > vinculación de cuenta, por ejemplo, si una clave api pasa por alto las reglas, Google simplemente puede prohibir la cuenta.

Pero luego descubrí que es muy fácil aplicar ingeniería inversa a la clave de autorización en las aplicaciones de Android / iOS usando herramientas MITM como Mitmproxy. Usando ese enfoque, logré encontrar la aplicación de la API de la aplicación oficial de Youtube y muchas otras aplicaciones que usan esos servicios, así que mi pregunta es si Google no se dispara a sí mismo con la tecla de autorización. ¿de esa manera? Como las aplicaciones aún pueden permanecer en el anonimato usando sus servicios, ¡e incluso pretenden ser otras cuentas! .

¿No es una idea mejor compilar sdk, que recibirá la clave de la cuenta y la usará para generar localmente una clave única para cada solicitud? Por supuesto, esto también podría tener ingeniería inversa, pero será mucho más difícil ...

    
pregunta Nadav96 10.03.2017 - 21:29
fuente

3 respuestas

1

Si está en el plan premium , puede obtener un ID de cliente de Google, que viene con su propia cuenta privada. llave.

  

Una vez que se haya registrado en el Plan Premium de Google Maps API, recibirá una carta de bienvenida de Google en la dirección de correo electrónico de contacto que proporcionó. Su carta de bienvenida contiene la siguiente información importante, así que asegúrese de tenerla a mano:

     
  • ID del proyecto
  •   
  • ID de cliente
  •   
  • Clave criptográfica privada para su ID de cliente
  •   
  • Cuenta de Google
  •   

Autenticación y autorización

     

Para realizar solicitudes a nuestras API, debe autenticar su aplicación con una clave de API o con su ID de cliente. Además, las solicitudes de algunas API también requieren firmas digitales.

Pero tienes que ser premium :)

    
respondido por el John Wu 10.03.2017 - 22:10
fuente
1

De enlace :

  

La API admite claves de API y credenciales de OAuth 2.0. Cree las credenciales que sean apropiadas para su proyecto:

     
  1. OAuth 2.0 : su aplicación debe enviar un token OAuth 2.0 con cualquier solicitud que acceda a los datos privados del usuario. Su aplicación envía un ID de cliente y, posiblemente, un secreto de cliente para obtener un token. Puede generar credenciales de OAuth 2.0 para aplicaciones web, cuentas de servicio o aplicaciones instaladas. Consulte la sección Creación de credenciales de OAuth 2.0 para obtener más información.

  2.   
  3. Claves de API : una solicitud que no proporciona un token OAuth 2.0 debe enviar una clave de API. La clave identifica su proyecto y proporciona acceso a API, cuotas e informes. Consulte la sección Creación de claves de API para obtener información sobre cómo crear una clave de API

  4.   

Lo que está viendo es una clave OAuth 2.0, que está vinculada a la cuenta del usuario individual, y se puede usar para acceder a datos privados del usuario; o una clave de API, que no se puede utilizar para acceder a datos de usuarios privados, sino solo para la limitación de cuotas / tasas y los informes.

Además, hay cuatro tipos de clave API:

  • Claves del servidor: utiliza esto en un servidor, no distribuye esta clave con su aplicación
  • Teclas del navegador: Google verifica el uso de este tipo de token contra el encabezado del Referer / Origin
  • teclas iOS y Android: Google verifica el uso de este tipo de token en los identificadores de la aplicación

MITMing una clave OAuth 2.0 solo le permite acceder a sus propios datos, por lo que no es realmente útil, mientras que MITMing una clave API no le permitirá acceder a los datos del usuario, por lo que tampoco es realmente útil. Lo único que puede hacer con MITMing una clave API es la interrupción dirigida de su aplicación al maximizar la cuota de su clave o sesgar el informe de uso de su aplicación. Estos son, por supuesto, problemas, pero no es algo que pueda evitarse si su aplicación llama a la API de YouTube directamente desde el lado del cliente.

    
respondido por el Lie Ryan 11.03.2017 - 00:12
fuente
0

Las aplicaciones deben tener los mismos problemas que las aplicaciones web, y en las aplicaciones web, resolvemos este problema utilizando "proxies". Usted tiene un servidor, normalmente PHP, que tiene su clave API y solicita que Google use esa clave cuando un cliente golpea el script del servidor.

La respuesta de la API se registra, se redacta y se pasa al cliente solicitante. Sus clientes nunca ven la clave API y usted tiene más entradas de registro que cubren el uso de su aplicación. También le ayuda a prohibir a ciertos usuarios sin tener que volver a teclear, e incluso a cambiar de proveedor de back-end mientras mantiene una respuesta uniforme desde el punto de vista de su cliente.

    
respondido por el dandavis 11.03.2017 - 15:21
fuente

Lea otras preguntas en las etiquetas