环境变量常常用来存储应用程序需要访问的重要信息,例如 API 密钥等敏感信息。而一般来讲,我们通常需要在将代码上线前将敏感信息加密处理,以免泄露,同时也要以易于使用和管理的方式解密这些值。在这篇文章中,我们将介绍如何使用 npm 包 envenc 来轻松地对敏感信息进行加密和解密。
环境变量加密的必要性
假设我们的应用程序需要访问一个名为 SECRET_API_KEY
的敏感信息,我们可以用以下方法来访问它:
const API_KEY = process.env.SECRET_API_KEY;
然而,如果我们将这个应用程序部署到生产环境中,并且还没有对这个值进行加密,那么任何人都可以通过查看应用程序的源代码来获得这个敏感信息。这会导致严重的安全问题。
因此,我们需要将敏感信息加密处理,以便只有被授权的人可以查看和使用这个值。这也就是使用 npm 包 envenc 的原因了。接下来,就让我们看看如何使用它。
envenc 的安装和基本使用
首先,我们需要在代码仓库中安装 envenc:
npm install envenc --save
安装完成后,我们需要设置一个约定,以便使用 envenc 对我们的敏感信息进行加密处理。具体地,我们需要将所有敏感信息存储在形如 ENCRYPTED_<KEY_NAME>
的环境变量中,其中 KEY_NAME
是敏感信息的名称。
例如,要对 SECRET_API_KEY
进行加密,我们可以使用以下命令:
ENCRYPTED_SECRET_API_KEY=$(echo -n "mysecret" | envenc)
请注意,这个命令会将值 mysecret
加密,并将结果存储在环境变量 ENCRYPTED_SECRET_API_KEY
中。这意味着我们在代码中就可以使用以下方法访问这个值:
const API_KEY = process.env.ENCRYPTED_SECRET_API_KEY;
接下来,我们需要在项目中安装 dotenv,以便将加密后的值解密,并将它们设置为环境变量的值。我们可以使用以下方法安装 dotenv:
npm install dotenv --save
详细介绍如下:
-- -------------------- ---- ------- - --------------- - ------------------------------- -- ---------- - ------- - --------- -------- ------------ - ---- ---------------------------------------------------- - ----------------- - ----------- ------ -------------------------- ----- --------------- -- - ---------- ----------- - ----- ---------- - -------------------------- ----------- ---- -- ------------ ------------------------------- ---------------------------
这些代码片段基本上完成了使用 npm 包 envenc 的全部步骤。从安装到解密环境变量,它们概括了如何使用 envenc 进行加密和解密。
envenc 的高级功能
除了基本的加密和解密功能外,envenc 还提供了许多高级功能。以下是一些最有用的功能:
自定义加密方式
默认情况下,envenc 使用 AES-256-CBC 对敏感信息进行加密。但是,您可以通过传递 --encryptor
标志来选择其他加密算法,例如 AES-128-CBC。
加解密预处理
有时候,我们需要在加密之前对值进行处理,或者在解密之后对值进行后处理。envenc 允许您使用预处理和后处理函数来实现这些功能。例如,要将加密值转换为 Base64,我们可以使用以下命令:
ENCRYPTED_SECRET_API_KEY=$(echo -n "mysecret" | base64 | envenc --encryptor "AES-128-CBC" --preprocess "base64" --postprocess "base64")
这条命令将使用 AES-128-CBC 进行加密,并在加密之前和解密之后将值转换为 Base64 编码。
加密 Key 的私钥管理
默认情况下,envenc 将使用由操作系统生成随机数作为加密的 Key。但是,为了更好地管理密钥,我们还可以使用自己的私钥进行加密。
在使用自己的私钥加密之前,您需要使用 envenc-keygen
命令生成新的私钥。例如:
-- -------------------- ---- ------- - ------------- ------- ---- ---------- --------- ------- -------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- -------------------------------- -------- --------- ------- -------- ------ ---- ---------- ------ -------- --------------------------------------------------------------- ------------------------------------------------------------ -------- ------ --------
这个命令将生成一个公钥和一个私钥。请注意,私钥是加密和解密敏感信息所必需的。因此,您应该妥善保管私钥。
结语
通过本篇文章,我们了解了如何在前端应用程序中使用 npm 包 envenc 进行环境变量加密和解密。总体来说,envenc 提供了一个简单而有效地解决方案,以保护我们的敏感信息,它的高级功能也为我们提供了更加灵活和个性化的选项。
希望本篇文章能够帮助诸位开发者加强应用程序的安全性,提升应用程序的质量和稳定性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e25a563576b7b1ecef9