目录
引言
在现代软件开发中,保护敏感信息的安全性是至关重要的。.env 文件通常用于存储应用程序的配置信息,如私钥、API 密钥、数据库密码等。然而,如果这些文件被意外泄露(例如上传到公共代码仓库),可能会导致严重的安全问题。为了应对这一挑战,加密 .env 文件成为了一种有效的解决方案。通过加密,即使文件被泄露,攻击者也无法直接读取其中的内容。本文将详细介绍如何使用 @chainlink/env-enc 工具对 .env 文件进行加密,并在运行时安全地加载这些变量。
一、为什么需要加密 .env 文件?
.env 文件
通常包含敏感信息,如私钥、API 密钥、数据库密码等。
如果直接将 .env 文件上传到代码仓库(如 GitHub),可能会导致信息泄露,引发安全问题。
加密 .env 文件后,即使文件被泄露,攻击者也无法直接读取其中的内容。
二、如何把env内容进行加密呢?
1、安装 @chainlink/env-enc
npm install --save-dev @chainlink/env-enc
安装好之后,在 package.json 中 devDependencies 开发模式的依赖下有 env-enc
。
2、设置密码
npx env-enc set-pw
按提示输入一个强密码,该密码将用于加密和解密 .env 文件。
3、添加变量
①输入变量名
可以按住 shift + ctl + v 复制到控制台
我这里输入的是 SEPOLIA_URL
②然后按回车键
③输入这个变量的值
④按回车键
然后会询问你是否还需要再添加变量,我这里需要加密两个,以此类推。
所以再输入了一个变量名 PRIVATE_KEY
;按回车键;输入变量的值;按回车键;不需要添加变量的话,再按一次 enter 就可以啦。下面的图中 绿色的 ENTER。
4、生成加密文件
运行上述步骤后,会生成一个 .env.enc 文件
,其中存储了加密后的变量值。这样,即使文件被泄露,攻击者也无法直接读取内容。
5、加载加密变量
然后在配置文件中调用 这是原来的调用.env文件的导入。
然后把 原来导入的dotenv
替换成 @chainlink/env-env
导入进去 就好啦,这样调用的就是.env.enc
里面的变量啦。
6、更新 .gitignore 文件
再在 .gitignore 文件
加入.env.enc
这样上传代码到 git 就可以忽略这个文件啦。
三 @chainlink/env-enc 的工作原理
@chainlink/env-enc
使用对称加密算法(如 AES)对 .env 文件
中的内容进行加密。
加密后的内容存储在 .env.enc 文件
中。
在运行时,工具会使用你设置的密码解密 .env.enc 文件
,并将其内容加载到环境变量中 process.env。
总结
通过使用 @chainlink/env-enc,我们可以有效地保护 .env 文件中的敏感信息,防止其在开发和部署过程中被泄露。加密后的 .env.enc 文件可以安全地存储和共享,而解密后的变量则可以在运行时安全地加载到应用程序中。此外,将加密文件加入 .gitignore 可以进一步确保敏感信息不会被意外上传到代码仓库。这种方法不仅提高了开发环境的安全性,还为团队协作提供了便利。