如何在Vue3中保护密钥



我最近读到vueJS网站上说:

警告不要在您的应用程序!环境变量嵌入到构建中,这意味着任何人可以通过检查应用程序的文件来查看它们。

现状

我使用nodejs创建了一个API。它提供来自我的postgres数据库的数据。

api托管在受NGINX基本身份验证保护的ubuntu服务器上。我使用用户名和密码(通过.htpasswd(访问api。

我的Vue应用程序向我的API发送获取请求,如下所示:

async getStuff() {
await axios({
method: 'GET',
url: MyAPIUrl,
auth: {
username: this.authAdmin, 
password: this.authPassword,
},
})
.then((data) => {
//do stuff
})
...

正如您所看到的,在获取请求中,我有基本的Auth用户名和密码。因此,这意味着用户名和密码在VUE中,因此浏览器可以看到它。

我做了很多研究,我不明白如何在不暴露私钥的情况下为我的Vue应用程序提供对我的api(需要身份验证(的访问。

还有别的办法吗

我在网上读到我需要";在后端处理这个";。但我不明白我怎么能做到这一点,并且仍然允许我的Vue应用程序访问数据库中的数据?

您不应该在应用程序中存储诸如API密钥之类的敏感信息。

API密钥和其他敏感信息可以从完成部署的环境中传入。您可以在创建管道时对其进行配置。

在后端处理它的另一种方法

一种可能的解决方案是删除身份验证,并将前端URL添加到CORS下的可访问端点列表中。

对于那些感兴趣的人,我通过解耦身份验证过程来解决这个问题。

对于后端:我使用jwt.io来保护我的api路由。我遇到的问题是,我使用.htpasswd保护我的api路由。这就是为什么我在前端的请求中传递auth:{}。

通过更改为jwt,我现在可以通过安全令牌进行通信了。

注意-我也使用bycrypt来散列我的密码。

最新更新