es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La clave de API se revela a través de la URL de solicitud, ¿cómo se debe manejar?

He visto una pregunta similar como https://stackoverflow.com/questions/67897693/how-to-solve-api-key-is-visible-on-request-url-problem, pero no creo que sea aplicable a mi caso de uso.

Estoy utilizando la autenticación de Firebase para mi aplicación (una aplicación de React, servida desde el backend de NestJS) y noto algo, expone la clave de API de Google Cloud a través de la URL de la solicitud. El flujo actual de autenticación es el siguiente:

  1. Utilizando OAuth2, el frontend realiza una llamada a Google Identity Platform utilizando el SDK de Firebase para recuperar información de inicio de sesión (nombre para mostrar, token de identificación, etc.).
  2. El frontend realiza una llamada a la API de NestJS para validar la información de inicio de sesión utilizando el SDK de administrador de Firebase y crea una cookie de solo lectura HTTP para preservar el estado de autenticación.

Según tengo entendido, la aplicación de React requiere acceso a la clave de API para implementar Firebase. No hay forma de evitar ese requisito. Incluso si una clave está oculta en el archivo .env, la clave de API aún se revela a través de la pestaña de red. En algunos casos, digamos que olvido manejar una excepción de una función de Firebase signInWithRedirect() (u otras funciones de Firebase), se produce un error (Uncaught Promise: requestUrl/apiKey="Mi Clave") que se muestra en la consola, por lo que es aún peor.

No estoy seguro si entiendo algo mal en cuanto a toda la implementación y el flujo de autenticación. Si es así, por favor, corrígeme sobre eso. Si no es así, por favor, házmelo saber cómo resolver este problema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que la exposición de la clave de API a través de la URL de la solicitud es una consecuencia inevitable de usar la autenticación de Firebase con React. Como se mencionó, la clave de API es necesaria para la implementación de Firebase y, aunque esté oculta en .env, todavía se puede revelar a través de la pestaña de red.

    Sin embargo, existen algunas medidas que se pueden tomar para mitigar este problema. Un enfoque es restringir el uso de la clave de API a dominios o IP específicas utilizando las restricciones de clave de API de Google Cloud Platform. De esta manera, la clave de API solo puede ser utilizada por fuentes autorizadas y cualquier intento no autorizado será bloqueado.

    Otro enfoque es implementar autenticación en el lado del servidor en la API de NestJS para evitar exponer la clave de API en el lado del cliente. El backend puede manejar el proceso de autenticación y solo enviar la información necesaria al frontend.

    En general, aunque puede que no sea posible resolver completamente el problema de la exposición de la clave de API, se pueden tomar medidas para minimizar el riesgo y garantizar una autenticación segura.

Comments are closed.