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 contra el abuso, puedes usar Firebase App Check para verificar que todas las llamadas entrantes a la API provengan de tu app real y de un dispositivo no adulterado.
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. Usar 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.
App Check también admite la protección contra repetición, lo que significa que un token de App Check solo se puede usar una vez.
Resumen general del funcionamiento de 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 tienen una certificación válida, así como las solicitudes provenientes de una app o una plataforma que no autorizaste.
Cuando configures App Check, considera agregar la protección contra repetición, que hace que los tokens de App Check sean de uso único. Esta opción ofrece protección mejorada más allá de la protección básica y te permite establecer un nivel de protección adecuado para tu app y tus casos de uso.
Puedes encontrar información detallada sobre App Check en su documentación, incluidas sus cuotas y límites.
Configurar App Check
En la documentación de App Check, se proporcionan descripciones detalladas de los proveedores de certificación, así como instrucciones de implementación detalladas.
Elige un proveedor de certificación predeterminado y sigue las instrucciones de implementación en los siguientes vínculos:
- Plataformas de Apple: DeviceCheck o App Attest
- Android: Play Integrity
- Web: reCAPTCHA Enterprise
- Flutter: Admite todos los proveedores predeterminados anteriores
para Flutter y App Check. Si usas versiones anteriores del complemento, consulta la nota sobre la instanciación especial a continuación. - Unity: Admite todos los proveedores predeterminados anteriores
Ten en cuenta que, si ninguno de los proveedores de certificación 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.
(Obligatorio) Habilita la aplicación de App Check antes de confirmar tu app en un sistema de control de código fuente disponible públicamente, compartirla o hacerla disponible públicamente.
(Recomendado) Mejora la protección agregando la protección contra repetición, lo que significa que un token de App Check solo se puede usar una vez.
Mejora la protección agregando protección contra repeticiones
|
Te recomendamos usar las versiones más recientes del SDK, pero asegúrate de usar, como mínimo, una de estas versiones para usar la protección contra repeticiones: Plataformas de Apple v12.2.0 y versiones posteriores | BoM de Android v34.14.0 y versiones posteriores (App Check v19.1.0 y versiones posteriores) | Web v12.14.0 y versiones posteriores | Flutter v4.15.0 y versiones posteriores (App Check v4.10.0 y versiones posteriores) | Unity v13.12.0 y versiones posteriores |
De forma predeterminada, App Check usa tokens de sesión que tienen un tiempo de actividad (TTL) configurable entre
Sin embargo, puedes mejorar la protección más allá de esta protección básica aplicando la protección contra la repetición, que usa tokens de uso limitado. Cuando se aplica la protección contra repetición, sucede lo siguiente:
App Check bloqueará las solicitudes a Firebase AI Logic que usen tokens de sesión. En cambio, App Check solo permitirá una solicitud a Firebase AI Logic si usa un token de uso limitado recién generado.
Después de que se verifica el token de uso limitado, se consume para que se pueda usar solo una vez, lo que evita los ataques de repetición.
El SDK de App Check genera un nuevo token de uso limitado para cada solicitud. Ten en cuenta que este proceso puede afectar tus solicitudes, ya que agrega cierta latencia y, a veces, costos (según tu proveedor de certificación).
Configura y aplica la protección contra repeticiones
|
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 configurar y aplicar la protección contra repeticiones:
Si aún no lo hiciste, implementa App Check y habilita la aplicación de App Check para tu app.
Habilita el uso de tokens de uso limitado.
En tu app, durante la creación de instancias, establece el parámetro
useLimitedUseAppCheckTokensentrue: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
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...Aplica la protección contra la repetición.
En la base de código de tu app, asegúrate de haber habilitado el uso de tokens de uso limitado (consulta el paso anterior).
En la consola de Firebase, ve a Seguridad > App Check.
Expande la vista de métricas para Firebase AI Logic.
Asegúrate de que la Protección básica esté Aplicada y, luego, haz clic en Continuar.
Para la protección contra repeticiones, elige Sin aplicar (solo supervisión) o Aplicada.
Ten en cuenta lo siguiente para decidir cuándo aplicar la protección contra repeticiones:
Se recomienda supervisar tus solicitudes si es probable que una cantidad considerable de usuarios usen versiones anteriores de tu app sin que se habiliten los tokens de uso limitado. Si aplicas la protección contra repeticiones de inmediato, se bloquearán las solicitudes de esos usuarios.
Puedes supervisar específicamente la métrica No verificadas (token reutilizado), que es la cantidad de solicitudes que tienen un token que ya se usó en una solicitud anterior. Supervisa esta métrica en la consola de Firebase (ve a la pestaña APIs en Seguridad > App Check).
Si una parte significativa de las solicitudes recientes se encuentran en esta categoría, puedes evitar interrumpir a los usuarios y considerar esperar para aplicar la protección contra repeticiones hasta que más usuarios hayan actualizado la app a una versión que use tokens de uso limitado.
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.