如何使用外部 api 访问令牌而不将它们暴露给用户?

IT技术 reactjs access-token
2021-04-27 21:59:11

对不起,如果这可能是一个微不足道的问题,但我想确定并且无法在网上找到明确的答案。

我正在编写一个使用 Mapbox 的小应用程序,我正在使用react-map-gl他们需要客户端的访问令牌,因此他们建议使用环境变量。我的问题是可以简单地在前端文件夹中创建一个 .env 文件并将变量放在那里吗?

谢谢!

1个回答

您无法避免在前端公开 API 密钥。如果有人想在您的源代码中挖掘,他们会找到它们。

但是,您应该始终将 Internet 上可见的任何 API 密钥配置为仅限于特定的引荐来源,即您网站的域。

通常这是在通过提供商的仪表板创建 API 密钥期间完成的。

对于 Mapbox,您可以在此处阅读有关限制 API 令牌的文档它指出:

您可以通过添加 URL 限制使 Web 地图的访问令牌更加安全。当您向令牌添加 URL 限制时,该令牌将仅适用于源自您指定的 URL 的请求。没有限制的令牌适用于源自任何 URL 的请求。

(强调我自己)


他们需要客户端的访问令牌,因此他们建议使用环境变量。我的问题是可以简单地在前端文件夹中创建一个 .env 文件并将变量放在那里吗?

前端开发中使用环境变量有两个原因:

  1. 为方便起见,从源代码中删除特定于环境的配置。

  2. 将敏感信息排除在源代码之外。您不应向版本控制提交 API 令牌或其他类似的敏感细节。

在前端代码中使用环境变量不会对最终用户保密。无论环境变量在构建时的值是什么,都将在编译输出中可见。