15

Seguridad en Android: mantén a salvo tus API Keys

26736Puntos

hace 7 años

Si tienes una aplicación y en ella seguramente estás implementado cosas como:

  • Login con Facebook, Twitter, GitHub o cualquier otra red social
  • Mapas de Google
  • Alguna API propia que complementa tu aplicación
  • Una API de otro propietario

La mayoría de las aplicaciones cuentan con estas características y seguramente has notado que en todas te pide un dato como este:

  • api_key
  • access_token
  • token
  • etc.

Se ubican con diferentes nombres pero en esencia, este dato es una cadena de caracteres alfanumérica única y personalizada, que es tu llave de acceso al servicio que estas solicitando. Si alguien llega a obtenerla puede tener acceso a tus usuarios e información valiosa que tiene que ver con tu aplicación. Por eso es muy importante que no estén accesibles para aquellos usuarios curiosos que de pronto obtienen tu apk (archivo ejecutable de la app) y con procesos de ingeniería inversa, logran decifrar y ver el código fuente de las aplicaciones.

Hoy aprenderemos a implementar una capa de seguridad que mantendrá tus Key’s a salvo 😃 Además, aprenderemos a usar Gradle en Android para mantener aislados del código fuente estos datos.

No profundizaré mucho, seré muy puntual en el proceso pero, si quieres saber más y entender más cómo funciona, puedes ir a nuestro Curso Definitivo de Android y aprenderlo todo 😄

Cómo comenzar

Normalmente tus api keys estarán almacenadas en el archivo strings.xml o en alguna clase de constantes, si las tienes ahí están vulnerables a ser descubiertas con ingeniería inversa.

gradle.properties

Este archivo lo encontrarás en la sección Gradle Scripts como se muestra en la figura:

Captura de pantalla 2017-07-18 a la(s) 23.19.23.png

Cuando lo abres por primera vez verás algo como esto:

Captura de pantalla 2017-07-18 a la(s) 23.24.52.png

Debajo de todos los comentarios, ahí definirás todas tus api keys pasaremos de esto:

Captura de pantalla 2017-07-18 a la(s) 23.30.09.png

A tenerlo de esta forma:

Captura de pantalla 2017-07-18 a la(s) 23.32.48.png

build.gradle

Ahora el siguiente archivo a editar es el build.gradle que se encuentra a nivel de módulo de la aplicación, es decir el que ves a continuación:

Captura de pantalla 2017-07-18 a la(s) 23.39.39.png

Tú sabes que en ese archivo declaramos todas las dependencias y se define todo o que se incluirá en el archivo ejecutable apk.

Debajo de la primera línea:

apply plugin:'com.android.application'

Definiremos una variable que accederá a la propiedad que dejamos definida en gradle.properties. Lo haremos de la siguiente forma:

defFACEBOOK_APP_ID = '"'+FacebookAppId+'"' ?:'"No Token Facebook"';

Lo que estamos diciendo es que a apartir del operador terneario, accedemos al valor de la propiedad si tiene un valor se almacena en la variable FACEBOOK_APP_ID en caso contrario la variable obtiene el valor “No Token Facebook”.

Ahora procederemos a inicializar el objeto type con los valores de nuestras api key’s como se muestra a continuación:

Captura de pantalla 2017-07-18 a la(s) 23.53.48.png

Si quires que la variable esté disponible como un recurso string, utiliza la instrucción:

type.resValue'string', 'FACEBOOK_APP_ID', FACEBOOK_APP_ID

Pero si quieres que este disponible para ser utilizado en el código Java, lo haremos de la siguiente forma:

type.buildConfigField'String', 'FACEBOOK_APP_ID', FACEBOOK_APP_ID

De tal forma que nuestro código quedará así:

Captura de pantalla 2017-07-19 a la(s) 00.03.58.png

Para que todo cobre vida es necesario que sincronices el proyecto:

Captura de pantalla 2017-07-18 a la(s) 23.55.52.pngCaptura de pantalla 2017-07-18 a la(s) 23.56.15.png

Para el caso partícular del api key de Facebook este se llama desde el archivo AndroidManifest.xml como un recurso string, notarás que aparece en rojo:

Captura de pantalla 2017-07-18 a la(s) 23.59.18.png

Esto es porque sigue apuntando al recurso que había antes en el strings.xml. Ahora lo accederemos a partir del nombre de la variable que está en build.gradle de la siguiente forma:

Captura de pantalla 2017-07-19 a la(s) 00.05.47.png

Si quieres acceder a la variable desde el código Java lo harás de la siguiente forma:

BuildConfig.FACEBOOK_APP_ID
Captura de pantalla 2017-07-19 a la(s) 00.11.35.png

El resultado lo podrás ver en la consola:

Captura de pantalla 2017-07-19 a la(s) 00.12.29.png

El archivo gradle.properties no se incluye en el apk, por lo tanto tus key’s ahora están a salvo 😄

Si quieres saber más te invito a nuestro Curso Definitivo de Android. Te veo ahí 💚

Ann
Ann
anncode

26736Puntos

hace 7 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
1

Geweldig artikel over beveiliging op Android! De informatie over het beschermen van onze API-sleutels is cruciaal in deze digitale tijden.
Ik waardeerde hoe je elke stap duidelijk en beknopt uitlegde. De analogie met het beschermen van schatten online was geweldig. Bedankt voor het op de hoogte houden en veilig houden in de wereld van technologie!

1

no es segura esa forma de añadir las claves ya que si descodificas el apk y buscas el archivo BuildConfig.java pueds ver las claves claramente.

1

Free fire is the most well known game worldwide, And Every player Wants to hack jewels in the free fire. Here is the most nitty gritty article on How to hack free fire precious stones. These Free Fire Diamond Hacks will assist you with producing Unlimited precious stones in Garena free fire 2022. Peruse this article cautiously to be aware of each and every Free Fire Diamond Generator.

In this year, 2022 free fire will send off loads of in-game occasions, Such as jewel illustrious and Incubator occasions, and free fire players like to take part in these sorts of occasions. Yet, the issue is for taking part in these occasions, players should have free fire precious stones in enormous amounts. Numerous players can’t utilize the free fire jewels hack generator due to an absence of in-game information.

Free Fire Diamonds Generator and Generator Diamonds Online Free Fire both are the best Free Fire Diamonds Generator Tool. In this article, we will share everything about the Free Fire Generator and Free Fire Diamonds Hack, and this article will unquestionably assist you with getting limitless precious stones in the free fire for nothing.

In this article, we will likewise cover the most recent occasions of the free fire game, which can give you an immediate connection to the jewel generator with the expectation of complimentary fire. In 2022 it is easy to get a Free Fire Free Diamond utilizing the Free Fire Diamonds Generator. Along these lines, how about we start.

1
un año

I have been playing the game you recommend very interesting, I often look for entertaining off-road games with my cars. You can try now Hill Climb Racing MOD APK game for Android phones.

1

Hi all, Smule APK is an application for the best online karaoke which is very popular for now, thanks.

1

Most of the people play

<cod<a href="https://gtahut.com/">gta san andreas download android 2022 apk</a>e>

on the mobile phone

1

Si está utilizando un dispositivo Android, venga a ModCombo, este es un sitio web que proporciona una gran cantidad de archivos apk de alta calidad, mod apk hoy.