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.

¿Cómo puedo encriptar mis variables dotenv al ejecutar `npm run build`?

Estoy construyendo una aplicación de Firebase utilizando React v17.0.2 que utiliza dotenv v8.2.0 para llenar el objeto firebaseConfig.

Cuando ejecuto npm run build, empaqueta los scripts y los coloca en la carpeta de compilación (obviamente), pero noté que cuando veo el archivo JavaScript que se empaquetó en la compilación, puedo ver todos los valores de dotenv. Esto es un gran riesgo de seguridad, ya que contiene la clave API de la aplicación de Firebase.

Para mayor claridad, esto es cómo se ve la variable firebaseConfig:

const firebaseConfig = {
  apiKey: process.env.REACT_APP_API_KEY,
  authDomain: process.env.REACT_APP_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_DATABASE_URL,
  projectId: process.env.REACT_APP_PROJECT_ID,
  storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_MESSAGE_SENDING_ID,
  appId: process.env.REACT_APP_APP_ID
};

¿Hay alguna forma de ocultar o cifrar estos valores?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, una opción es utilizar la característica de configuración del ambiente de Firebase Hosting en lugar de depender de un archivo dotenv. Esto te permite almacenar de forma segura las variables de ambiente en Firebase Hosting y acceder a ellas durante la ejecución utilizando el objeto window._env_. Para utilizar esta característica, primero deberás habilitarla en tu proyecto de Firebase y luego añadir las variables de ambiente utilizando la CLI de Firebase o la consola de Firebase Hosting.

    Otra opción es utilizar un enfoque del lado del servidor, donde la aplicación frontend se comunica con un servidor backend que almacena las variables de ambiente sensibles de forma segura y las proporciona al cliente sólo cuando sea necesario. Este enfoque requiere configurar un servidor backend, pero proporciona seguridad adicional al mantener información sensible oculta en el lado del servidor.

Comments are closed.