Implementa la Verificación de aplicaciones de Firebase para proteger las APIs de clientes no autorizados

Cuando llamas a una API directamente desde una app web o para dispositivos móviles (por ejemplo, las APIs que permiten el acceso a modelos de IA generativa), la API es vulnerable al abuso por parte de clientes no autorizados. Para ayudar a proteger estas APIs, puedes usar Firebase App Check y verificar que todas las llamadas entrantes a la API provengan de tu app real.

Firebase AI Logic proporciona una puerta de enlace de proxy que te permite integrar Firebase App Check y proteger las APIs de modelos de IA generativa a las que llaman tus apps web y para dispositivos móviles. El uso de App Check con los SDKs de Firebase AI Logic admite todas nuestras configuraciones:

  • Protege a ambos proveedores de la "API de Gemini": Gemini Developer API y Vertex AI Gemini API.

  • Protege todos los modelos compatibles, tanto los modelos Gemini como los modelos Imagen.

Resumen de alto nivel sobre cómo funciona App Check

Con App Check, los dispositivos que ejecutan tu app usan un proveedor de certificación de apps o de dispositivos que verifica uno o ambos de los siguientes procedimientos:

  • Las solicitudes se originan en tu app auténtica
  • Las solicitudes se originan en un dispositivo auténtico, no adulterado

Esta certificación se adjunta a cada solicitud que tu app realiza con un SDK de Firebase AI Logic. Cuando habilites la aplicación de App Check, se rechazarán las solicitudes de clientes que no tengan una certificación válida, así como las solicitudes provenientes de una app o una plataforma que no autorizaste.

Te recomendamos que, cuando configures App Check, te asegures de prepararte para la próxima protección mejorada (conocida como protección contra repeticiones).

Puedes encontrar información detallada sobre App Check en su documentación, incluidas sus cuotas y límites.

Proveedores disponibles e instrucciones de implementación

En la documentación de App Check, se proporcionan descripciones de los proveedores de certificación, así como instrucciones de implementación.

  1. Elige un proveedor predeterminado y sigue las instrucciones de implementación en los siguientes vínculos:

    Ten en cuenta que, si ninguno de los proveedores predeterminados es suficiente para tus necesidades, puedes implementar un proveedor personalizado que use un proveedor de certificación externo o tus propias técnicas de certificación.

  2. (Recomendado) Prepárate para la próxima protección mejorada de App Check (conocida como protección contra repeticiones).

  3. (Obligatorio) Antes de lanzar tu app para usuarios reales, habilita la aplicación de App Check.

Se requiere una instanciación especial para Flutter

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

Cuando uses App Check con Firebase AI Logic en apps de Flutter, debes pasar App Check de forma explícita durante la creación de instancias, de la siguiente manera:

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

Prepárate para la próxima protección mejorada

Actualmente, el uso de tokens de uso limitado solo está disponible para las plataformas de Apple (v12.2.0 y versiones posteriores), Android (v17.2.0 y versiones posteriores, BoM v34.2.0 y versiones posteriores) y la Web (v12.3.0 y versiones posteriores) .
Se lanzará la compatibilidad con otras plataformas en las próximas semanas.

De forma predeterminada, App Check usa tokens de sesión que tienen un tiempo de actividad (TTL) configurable entre 30 minutos y 7 días. El SDK de App Check almacena en caché estos tokens de sesión y los envía junto con las solicitudes de tu app.

En el futuro, App Check agregará la opción para habilitar la protección contra repeticiones para Firebase AI Logic (similar a la compatibilidad que App Check ya ofrece para algunos otros recursos). Cuando se habilita la protección contra repeticiones, se mejora la protección de las siguientes maneras:

  • App Check solo permitirá solicitudes si están acompañadas de un tipo especial de token llamado token de uso limitado.

  • Después de que se verifica el token de uso limitado, se consume para que se pueda usar solo una vez, lo que evita ataques de repetición.

Para prepararte para la protección contra repeticiones, te recomendamos que habilites el uso de tokens de uso limitado como parte de la configuración de App Check. De esta manera, cuando la protección contra repeticiones esté disponible, podrás habilitarla antes, ya que más usuarios tendrán versiones de tu app que envíen tokens de uso limitado.

Ten en cuenta lo siguiente si habilitas el uso de tokens de uso limitado en tu app ahora (mientras la protección contra reproducción no está disponible):

  • App Check no bloquea el uso de tokens de sesión válidos.

  • Al igual que los tokens de sesión, el SDK de App Check almacena en caché los tokens de uso limitado y los envía junto con las solicitudes. Estos tokens de uso limitado proporcionan una pequeña cantidad de protección adicional en comparación con los tokens de sesión predeterminados, ya que tienen un TTL más corto (solo 5 minutos y no se pueden ajustar) en comparación con los tokens de sesión.

  • Aunque los tokens de uso limitado son válidos durante 5 minutos, el SDK generará un token nuevo para cada solicitud. Este proceso puede agregar cierta latencia a tu solicitud.

Sin embargo, cuando la protección contra repeticiones esté disponible para Firebase AI Logic en el futuro (y la habilites), no se podrán usar tokens de sesión ni reutilizar tokens de uso limitado. Ten en cuenta que la latencia adicional para generar un token nuevo para cada solicitud seguirá ocurriendo.

Habilita el uso de tokens de uso limitado

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

Sigue estos pasos para habilitar el uso de tokens de uso limitado:

  1. Implementa App Check y asegúrate de habilitar la aplicación de App Check para tu app.

  2. En tu app, durante la creación de instancias, habilita el uso de tokens de uso limitado configurando el parámetro useLimitedUseAppCheckTokens en true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    El uso de tokens de uso limitado con apps de Flutter será compatible en la próxima versión. Vuelva a consultar más tarde.

    Unity

    El uso de tokens de uso limitado con juegos de Unity se admitirá en una versión futura. Vuelva a consultar más tarde.

Comprende cómo se integra Firebase AI Logic con App Check

Para usar los SDKs de Firebase AI Logic, se debe habilitar la API de Firebase AI Logic (firebasevertexai.googleapis.com) en tu proyecto de Firebase. Esto se debe a que las solicitudes realizadas por los SDKs de Firebase AI Logic se envían primero al servidor de Firebase AI Logic, que actúa como una puerta de enlace de proxy en la que se realiza la verificación de Firebase App Check antes de que se permita que la solicitud continúe al backend del proveedor de "Gemini API" que elegiste y a las APIs para acceder a los modelos de Gemini y Imagen.