Node.js应用程序应该将密钥存储在哪里

Node.js应用程序应该将密钥存储在哪里

保护敏感数据/凭据,如第三方API凭据、会话密钥、数据库连接凭据、安全令牌、加密/解密密钥非常重要,因为公开暴露这些凭据可能导致您的账户被攻击,从而在您的账户上产生意外费用。将密钥值放在源代码中(通过硬编码)或提交凭据(公开)您的私钥、密码或其他敏感详细信息到版本控制中可能导致灾难性后果。处理Node.js中的配置密钥或凭据(如API密钥)的最佳方法是使用 环境变量

环境变量: 环境变量可以从应用程序外部配置代码中的值。环境变量是动态的名称/值对,可以创建任意数量的环境变量。环境变量存在于应用程序所部署的操作系统或容器之外。大多数应用程序首先在开发环境中进行部署,然后再实际部署到生产环境中。因此,我们必须确保每个环境都已正确配置。环境变量可以为不同的环境提供不同的配置选项。

一些常见的环境变量示例包括:

  1. 数据库连接信息
  2. API端点
  3. 第三方API密钥和机密
  4. 电子邮件ID和密码
  5. HTTP端口/地址

设置环境变量:

设置环境变量的语法如下,其中 ENV_VARIABLE_NAME 是我们的环境变量的名称, VALUE 是该变量的值。

ENV_VARIABLE_NAME=VALUE

Node.js提供了 process 对象,它是一个全局对象,提供有关当前Node.js进程的信息和控制。作为全局对象,它始终可用于Node.js应用程序,无需使用require()。process对象有一个属性 .env ,该属性返回一个包含用户环境的对象。

读取环境变量:

要从 .env文件 中读取环境变量,我们需要一些解析器来使其工作。解析器逐个读取变量并将其解析为环境变量。有一个npm包称为 dotenv ,它是一个零依赖的模块,将环境变量从 .env文件 加载到process.env对象中。

模块安装: 要安装此包,请在终端中输入以下命令:

npm install dotenv

需要的模块: 在应用程序中使用以下代码引入 dotenv 包:

require('dotenv').config();

现在,我们可以使用 process.env.[ENV_VARIABLE_NAME] 访问任何环境变量。

示例: 假设我们正在开发一个电子商务Node.js应用程序,我们有以下环境变量,如服务器端口号、数据库连接URL和密码、stripe API密钥、电子邮件ID和密码、会话密钥等。

步骤1: 在项目的根文件夹中创建一个名为 ‘.env’ 的文件,该文件将存储我们的所有环境变量。例如,我们的文件如下所示:

TEST.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>

步骤2: 创建一个 index.js 文件,我们将在该文件中访问我们定义的环境变量。

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); 

步骤3: 使用以下命令执行 index.js 文件:

node index.js

输出:

Node.js应用程序应该将密钥存储在哪里

注意: 始终在 .gitignore 文件中添加 .env 文件 ,以免将其提交到版本控制系统中。如果您不小心提交了 .env 文件 ,请尽快生成新的 API 密钥并更改密码,以避免任何灾难性影响,并将其从版本控制系统的跟踪中删除。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程