¿Dónde deben almacenarse las claves secretas para una aplicación Node.js?

Proteger los datos/credenciales confidenciales como credenciales de API de terceros, clave secreta de sesión, credenciales de conexión de base de datos, token de seguridad, claves de cifrado/descifrado es extremadamente importante, ya que exponer públicamente las credenciales puede comprometer su cuenta, lo que podría generar cargos inesperados en su cuenta. Poner valores secretos en el código fuente (codificándolos) o enviar credenciales (exponiendo) sus claves privadas, contraseñas u otros detalles confidenciales en el control de versiones puede ser realmente desastroso. La mejor manera de manejar claves de configuración o credenciales como claves API con Node.js es usar variables de entorno .

Variables de entorno: las variables de entorno tienen la capacidad de configurar un valor en el código desde fuera de su aplicación. Una variable de entorno es un par dinámico de nombre/valor, y se puede crear cualquier número de variables de entorno. Las variables de entorno están presentes fuera de la aplicación y residen en el sistema operativo o contenedor de la aplicación donde se implementa la aplicación. La mayoría de las aplicaciones se implementan primero en un entorno de desarrollo antes de implementarse realmente en el entorno de producción. Por lo tanto, debemos asegurarnos de que cada entorno se haya configurado correctamente. Las variables de entorno tienen la capacidad de proporcionar diferentes opciones de configuración para diferentes entornos.

Algunos ejemplos comunes de variables de entorno son: 

  1. Información de conexión de la base de datos
  2. Puntos finales de la API
  3. Claves y secretos de API de terceros
  4. ID de correo electrónico y contraseña
  5. Puertos/dirección HTTP

Configuración de la variable de entorno:

La sintaxis para establecer una variable de entorno es la siguiente, donde ENV_VARIABLE_NAME es el nombre de nuestra variable de entorno y VALUE es el valor de esa variable en particular.

ENV_VARIABLE_NAME=VALUE

Node.js proporciona un objeto de proceso que es un objeto global que proporciona información y control sobre el proceso actual de Node.js. Como global, siempre está disponible para las aplicaciones de Node.js sin utilizar require(). El objeto de proceso tiene una propiedad .env cuya propiedad devuelve un objeto que contiene el entorno del usuario.

Variables del entorno de lectura:

Para leer la variable de entorno del archivo .env , necesitamos un analizador para que funcione. El analizador lee las variables una por una y las analiza en el entorno. Hay un paquete npm llamado dotenv que es un módulo de dependencia cero que carga variables de entorno desde un archivo .env en un objeto process.env .

Instalación del módulo: para instalar este paquete, escriba el siguiente comando en la terminal:

npm install dotenv

Módulo requerido: requiere el paquete dotenv en la aplicación usando el siguiente código:

require('dotenv').config();

Ahora, podemos acceder a cualquier variable de entorno usando process.env.[ENV_VARIABLE_NAME]

Ejemplo: Supongamos que estamos desarrollando una aplicación Node.js de comercio electrónico en la que tenemos las siguientes variables de entorno, como el número de PUERTO del servidor, la URL y la contraseña de la conexión a la base de datos, la clave API de la banda, la ID y la contraseña del correo electrónico, la clave secreta de la sesión, etc. 

Paso 1: cree un archivo llamado ‘.env’ en la carpeta raíz del proyecto que almacenará todas nuestras variables de entorno. Por ejemplo, nuestro archivo se parece a lo siguiente:

PRUEBA.env

PORT=8080
DATABASE_URL=mongodb://localhost:27017/GFG
DATABASE_PASSWORD=<your password>
STRIPE_API_KEY=<your stripe api key>
EMAIL_ID=geeks.classes@geeksforgeeks.org
EMAIL_PASSWORD=<your email password>

Paso 2: Cree un archivo index.js donde accederemos a nuestra variable de entorno definida.

index.js

require('dotenv').config({ path: './TEST.env' })
  
console.log("PORT:", process.env.PORT);
console.log("DATABASE_URL:", process.env.DATABASE_URL);
console.log("DATABASE_PASSWORD:", process.env.DATABASE_PASSWORD);
console.log("EMAIL_ID:", process.env.EMAIL_ID);
console.log("STRIPE_API_KEY:", process.env.STRIPE_API_KEY);
console.log("EMAIL_PASSWORD:", process.env.EMAIL_PASSWORD);

Paso 3: Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

NOTA: Siempre agregue el archivo .env a .gitignore para evitar que se comprometa con los sistemas de control de versiones. Si alguna vez cometió un archivo .env por error, genere nuevas claves API y cambie las contraseñas lo antes posible para evitar efectos desastrosos y elimine el seguimiento del sistema de control de versiones.

Publicación traducida automáticamente

Artículo escrito por girishthatte y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *