如何在 Vue.js 应用程序上存储我的 api 私钥?

How do I store my private api key on Vue.js app?

我阅读了有关 Vue CLI 的文档,想确定我是否理解正确。

文档说,

Note that only NODE_ENV, BASE_URL, and variables that start with VUE_APP_ will be statically embedded into the client bundle with webpack.DefinePlugin. It is to avoid accidentally exposing a private key on the machine that could have the same name.

那么这是否意味着我应该在不带前缀 VUE_APP 的情况下存储我的私钥?例如,

VUE_APP_NOT_SECRET_KEY=not_secret_key
SECRET_KEY=secret_key

这是存储我的密钥的正确方法吗?

您可以在项目的根目录中创建一个 .env 文件,在 package.json

旁边

在该文件中,您可以将环境变量创建为 VUE_APP_SOME_KEY="someValue"

确保名称以 VUE_APP_

开头

然后你想在哪里使用它就可以做什么 process.env.VUE_APP_SOME_KEY

另外不要忘记将 .env 文件添加到 .gitignore

密钥不应存储在环境变量中,因为它们可以在客户端上访问

您应该使用 Microsoft 的 Key Vault 等产品。 Key Vault 是 Azure 服务的一部分。

业内最佳做法是将您的秘密存储在另一台服务器上。

Microsoft 通过 Key Vault 提供了这样一种方式,可以很容易地 implemented

还有其他产品。查看 azure keyvault competitor's list

编辑:我也忘了提,您目前不能直接在前端应用程序(单页应用程序)上按示例使用 KeyVault。您需要将后端和前端分开才能工作,否则您将无法访问 keyvault 客户端。

您可以将您的密钥存储在 VUE_APP_NOT_SECRET_KEY=not_secret_keySECRET_KEY=secret_key 中,从安全角度来看没有区别,任何具有最低前端技能的人都可以从浏览器读取此值。

唯一的区别是,如果您使用 VUE_APP_* 前缀,您的变量将位于 process.env 中,并在编译时使用 DefinePluing 被 Vue 替换。

cli.vuejs.org/guide/mode-and-env.html#environment-variables –

注意:您在 Vue 应用程序中存储的任何内容都不是秘密。