Usa la Verificación de aplicaciones para proteger tu clave de API
La Verificación de aplicaciones de Firebase protege las llamadas que se realizan desde tu app a Google Maps Platform, ya que bloquea el tráfico que proviene de fuentes que no son apps legítimas. Para ello, verifica si hay un token de un proveedor de certificación, como reCAPTCHA Enterprise. Integrar tus apps con la Verificación de aplicaciones ayuda a protegerlas contra solicitudes maliciosas, de modo que no se te cobren llamadas a la API no autorizadas.
¿La Verificación de aplicaciones es adecuada para mí?
Se recomienda usar la Verificación de aplicaciones en la mayoría de los casos, pero no es necesaria ni compatible en los siguientes casos:
- Estás usando el SDK de Places original. La Verificación de aplicaciones solo es compatible con el SDK de Places (nuevo).
- Apps privadas o experimentales Si tu app no es de acceso público, no se necesita la Verificación de aplicaciones.
- Si tu app solo se usa de servidor a servidor, no se necesita la Verificación de aplicaciones. Sin embargo, si los clientes públicos (como las apps para dispositivos móviles) usan el servidor que se comunica con GMP, considera usar la Verificación de aplicaciones para proteger ese servidor en lugar de GMP.
Descripción general de los pasos de implementación
En términos generales, estos son los pasos que seguirás para integrar tu app con la Verificación de aplicaciones:
- Agrega Firebase a tu app.
- Agrega e inicializa la biblioteca de Verificación de aplicaciones.
- Agrega el proveedor de tokens a tu app.
- Inicializa las APIs de Places y de Verificación de aplicaciones.
- Habilita la depuración.
- Supervisa las solicitudes de tu app y decide si aplicar medidas por incumplimiento.
Una vez que hayas integrado la Verificación de aplicaciones, podrás ver las métricas de tráfico del backend en Firebase console. Estas métricas proporcionan un desglose de las solicitudes según si están acompañadas de un token válido de Verificación de aplicaciones. Consulta la documentación de Verificación de aplicaciones de Firebase para obtener más información.
Cuando tengas la certeza de que la mayoría de las solicitudes provienen de fuentes legítimas y de que los usuarios actualizaron la app a la versión más reciente, que incluye tu implementación de la Verificación de aplicaciones, puedes activar la aplicación de medidas por incumplimiento. Una vez que se aplique, la Verificación de aplicaciones rechazará todo el tráfico que no tenga un token válido.
Consideraciones para planificar una integración de la Verificación de aplicaciones
Estos son algunos aspectos que debes tener en cuenta cuando planifiques tu integración:
- Uno de los proveedores de certificación que recomendamos, reCAPTCHA Enterprise, cobra por más de 10,000 evaluaciones al mes.
El otro proveedor de certificación que recomendamos, reCAPTCHA v3, tiene una cuota, después de la cual no se evaluará el tráfico.
Puedes optar por usar un proveedor de certificación personalizado, aunque este es un caso de uso avanzado. Consulta la documentación de la Verificación de aplicaciones para obtener más información.
-
Los usuarios de tu app experimentarán cierta latencia durante el inicio. Sin embargo, después de eso, cualquier revalidación periódica se producirá en segundo plano, y los usuarios ya no deberían experimentar latencia. La cantidad exacta de latencia en el inicio depende del proveedor de certificación que elijas.
La cantidad de tiempo que el token de Verificación de aplicaciones es válido (el tiempo de actividad o TTL) determina la frecuencia de las revalidaciones. Esta duración se puede configurar en Firebase console. La reatestación se produce cuando transcurre aproximadamente la mitad del TTL. Para obtener más información, consulta la documentación de Firebase de tu proveedor de certificación.
Integra tu app en la Verificación de aplicaciones
Requisitos previos y requisitos
- Una app con la versión semanal o trimestral más reciente de la API de Maps JS, y las bibliotecas Core y Places cargadas.
- Un proyecto de Cloud con las APIs de Maps JS y la API de Places (nueva) habilitadas.
- Debes ser el propietario de la app en la consola de Cloud.
- Necesitarás el ID del proyecto de la app de la consola de Cloud
Paso 1: Agrega Firebase a tu app
Sigue las instrucciones de la documentación para desarrolladores de Firebase para agregar Firebase a tu app.
Paso 2: Agrega la biblioteca de Verificación de aplicaciones y, luego, inicializa la función
Firebase proporciona instrucciones para cada proveedor de certificación predeterminado. En estas instrucciones, se muestra cómo configurar un proyecto de Firebase y agregar la biblioteca de Verificación de aplicaciones a tu app. Sigue las muestras de código proporcionadas para inicializar la Verificación de aplicaciones.
Paso 3: Carga las bibliotecas de la API de Maps JavaScript
Carga las bibliotecas Core, Maps y Places como se muestra en el siguiente fragmento. Para obtener más información y las instrucciones, consulta la documentación de la clase Place de la API de Maps JavaScript.
async function init() { const {Settings} = await google.maps.importLibrary('core'); const {Map} = await google.maps.importLibrary('maps'); const {Place} = await google.maps.importLibrary('places'); }
Paso 4: Inicializa las APIs de Places y de Verificación de aplicaciones
- Inicializa la Verificación de aplicaciones con la configuración que proporciona Firebase console.
- Asegúrate de que las solicitudes a la API de Maps JS vayan acompañadas de tokens de Verificación de aplicaciones:
async function init() { const {Settings} = await google.maps.importLibrary('core'); const {Map} = await google.maps.importLibrary('maps'); const {Place} = await google.maps.importLibrary('places'); const app = initializeApp({ // Your firebase configuration object }); // Pass your reCAPTCHA Enterprise site key to initializeAppCheck(). const appCheck = initializeAppCheck(app, { provider: new ReCaptchaEnterpriseProvider( 'abcdefghijklmnopqrstuvwxy-1234567890abcd', ), // Optional argument. If true, the SDK automatically refreshes App Check // tokens as needed. isTokenAutoRefreshEnabled: true, }); Settings.getInstance().fetchAppCheckToken = () => getToken(appCheck, /* forceRefresh = */ false); // Make a Places JS request const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'}); await place.fetchFields({fields: ['*']}); // Load a map map = new Map(document.getElementById("map"), { center: { lat: 37.4161493, lng: -122.0812166 }, zoom: 8, }); }
Paso 5: Habilita la depuración (opcional)
Si quieres desarrollar y probar tu app de forma local, o ejecutarla en un entorno de integración continua (CI), puedes crear una compilación de depuración de la app que use un secreto de depuración para obtener tokens válidos de la Verificación de aplicaciones. Esto te permite evitar el uso de proveedores de certificación reales en tu compilación de depuración.
Para probar tu app de forma local, haz lo siguiente:
- Activa el proveedor de depuración con fines de desarrollo.
- Recibirás un UUID4 aleatorio generado automáticamente (llamado _token de depuración_ en la documentación de la Verificación de aplicaciones) de los registros de depuración del SDK. Agrega este token a Firebase console.
- Para obtener más información e instrucciones, consulta la documentación de la Verificación de aplicaciones.
Para ejecutar tu app en un entorno de CI, haz lo siguiente:
- Genera un UUID4 aleatorio desde Firebase console.
- Agrega el UUID4 como un token de depuración y, luego, cópialo en un almacén de secretos al que accederán las pruebas de CI por cada ejecución de prueba.
- Para obtener más información e instrucciones, consulta la documentación de la Verificación de aplicaciones.
Paso 6: Supervisa las solicitudes de tu app y decide si aplicar medidas por incumplimiento
Antes de comenzar la aplicación de medidas, asegúrate de no interrumpir a los usuarios legítimos de tu app. Para ello, visita la pantalla de métricas de la Verificación de aplicaciones y consulta qué porcentaje del tráfico de tu app es verificado, desactualizado o ilegítimo. Una vez que veas que se verificó la mayor parte de tu tráfico, puedes habilitar la aplicación de medidas por incumplimiento.
Consulta la documentación de la Verificación de aplicaciones de Firebase para obtener más información y las instrucciones.