在哪里“隐藏”API密钥

问题描述 投票:2回答:2

我的问题是关于在哪里以及如何:

  1. 隐藏API密钥
  2. 访问我的app.js文件中的隐藏API密钥

在这种情况下,我正在处理Algolia Admin API密钥(但目的是以相当通用的方式提出这个问题)。

为了让我的应用程序正常工作,我需要根据某些用户操作更新我的Algolia索引(需要管理员API密钥才能执行此操作)。

我知道我不应该将我的Admin API密钥暴露给前端(即不要将它放在我的app.js文件中)。如何安全地将API管理密钥传递到我的app.js文件,以便我可以更新我的Algolia索引?

我遇到的一些事情:

- 我应该把它隐藏在config.json文件中吗?我无法弄清楚如何在我的js中使用从配置文件中导出的信息(这可能会破坏目的?)。我读了this

- 同时在Firestore文档中,它提及“与Apps和Algolia合作”,“App ID和API Key存储在函数配置变量中”。如何将API密钥存储在配置变量中?

- 我读this关于使用环境变量,并将它们导出到app.js文件。但是,如果我然后将app-env文件推送到服务器(我假设我需要为了让app.js文件读取API密钥),那么如何将其放入文件中更安全?

javascript api security algolia
2个回答
4
投票

您无法通过任何机制将密钥提供给客户端,并保密。

构建一个Web服务(使用您选择的服务器端语言,使用适当的任何身份验证)并编写您自己的API以允许执行有限的操作选择。然后,您的Web服务充当Algolia的客户端。


0
投票

经过一番研究后,这就是我的决定。

我需要创建一个单独的.js文件,其中包含Admin API Key和侦听数据库更改的函数,并对Algolia进行适当的更新(这很明显)。

接下来我需要运行该文件。我相信我有两个选择:

  1. 在本地运行该文件。这是安全的,因为文件不在本地计算机之外的任何地方提供。这里的主要缺点是我基本上必须始终保持文件打开,这在生产中很快就会变得不切实际。
  2. 将我的文件托管在像Heroku,Nodejitsu这样的地方,以便它可以在他们的服务器上永久运行。
© www.soinside.com 2019 - 2024. All rights reserved.