¿Por qué debo ocultar las claves de la API?

5

Necesito integrar mi aplicación de Android con Dropbox, básicamente, todo lo que quiero es que el usuario elija un archivo de su Dropbox y se lo entregue a mi aplicación. Para hacer eso estoy usando dropboxChooserSDK, y requiere una clave API para acceder a dropbox.

Desde mi primer instinto fue buscar cómo ocultar la clave. Mirando profundamente en he notado que no hay una bala de plata para resolver el problema (debería haber esperado tanto).

Por otra parte, no parece que haya mucho daño en tener la llave de mi Dropbox api expuesta al mundo dada la prupresión de la clave como se explica en su documentación de referencia :

  

Si está creando una herramienta de desarrollo sobre Dropbox, sus desarrolladores   Necesitará sus propias claves de aplicación de Dropbox

     

Si bien animamos a los desarrolladores a usar nuestros SDK y bibliotecas oficiales,   Sabemos que hay muchos enfoques diferentes para construir marcos   y APIs. Independientemente de cómo una aplicación hace uso de la plataforma Dropbox,   Necesitamos saber qué es esa aplicación para que podamos informar a los usuarios qué aplicaciones   están accediendo a sus datos. Por esa razón, si proporciona software o   servicios que envuelven la plataforma Dropbox para que otros desarrolladores la utilicen,   esos desarrolladores aún deben registrarse para obtener su propia clave de aplicación de Dropbox.

Pero eso me hizo pensar, acerca de la pregunta, ¿cuánto esfuerzo debería poner para esconder mis claves API? Mi intuición me dice que use una parte posterior del cálculo del sobre para estimar las compensaciones de costo / beneficio individualmente, pero también leí aquí que hay una discusión continua sobre tales problemas (aunque no pude encontrarlo).

¿Cuál es el entendimiento general sobre la seguridad de las claves de API?

    
pregunta Marcelo Lacerda 31.01.2017 - 17:45
fuente

1 respuesta

7

No sé nada sobre Dropbox en particular, pero mi comprensión de las claves de API de otros proveedores de almacenamiento como Google Drive, Amazon S3, etc. es que permiten a los usuarios iniciar sesión a través de sus aplicaciones o aplicaciones de terceros. Y quieren poder rastrear cuál es cuál. La cita en la pregunta hace que parezca que se trata de privacidad: permite a los usuarios finales saber qué aplicaciones están accediendo a sus datos y poder revocar el permiso de una aplicación a otra.

A menudo, también existe un ángulo de facturación: Google Drive, por ejemplo, ofrece un servicio gratuito directamente a los usuarios finales a través de sus propias aplicaciones, pero le cobra unos $ / gb a los desarrolladores que desean utilizar su infraestructura dentro de otro producto. El desarrollador de la aplicación lo carga a sus usuarios a través de una suscripción, o simplemente lo traga como un costo de negocio, depende de ellos.

Aquí es donde entran las claves API: sin una clave API, una solicitud entrante al servidor de Dropbox es solo una solicitud; usted sabe a qué usuario final se debe porque han iniciado sesión, pero no tiene forma de saber si están usando su aplicación o alguna aplicación de terceros, y si es así, a quién debe facturar el ancho de banda. Al incorporar una clave API en su aplicación, está vinculando cada solicitud que realiza su aplicación a la cuenta de facturación de su desarrollador.

Dado que los archivos de Android .apk son bastante fáciles de aplicar ingeniería inversa, posiblemente un atacante podría extraer su clave API, usarla en su aplicación y recibiría la factura.

¿El esfuerzo de proteger la clave vale el riesgo? Eso depende de usted. Si supervisa su uso con frecuencia o si ha establecido algún tipo de límite de uso / alarma y confía en que puede revocar la clave rápidamente si comienzan a ocurrir problemas, entonces probablemente esté bien.

ACTUALIZACIÓN: Como @XiongChiamiov señala en los comentarios, también debe considerar la interrupción del servicio si necesita revocar su clave. Digamos que comienza a ver una facturación anormalmente alta o alcanza su límite de uso preestablecido. Tu respuesta probablemente sería algo como:

  • codifica para implementar una mejor protección de clave API en tu aplicación
  • publicar una actualización de seguridad en Play Store con una nueva clave de API
  • revocar el antiguo.

La función Dropbox de tu aplicación fallará hasta que los usuarios actualicen su aplicación a través de Google Play. Esto sin duda causará cierta confusión entre sus usuarios. Si este es un riesgo suficientemente grande para preocuparse en este momento, depende de usted.

    
respondido por el Mike Ounsworth 31.01.2017 - 17:51
fuente

Lea otras preguntas en las etiquetas