为什么我需要为我的服务器隐藏 api 密钥/环境变量?

问题描述

我是在 MERN 堆栈应用的上下文中问这个问题的,但我确信它也适用于普遍情况。

为什么我们必须在我们的服务器中隐藏我们的数据库和其他服务的 API 密钥。如果我们必须使用 dotenv 或其他机制将其从代码中抽象出来,这是否意味着用户可以查看我们的代码?这不是意味着用户将能够看到我们的服务器端业务逻辑吗?

我对此很困惑。 :(

解决方法

开发人员的一个重要优势是它可以轻松地将代码部署到不同的环境。 当对这些值进行硬编码时,意味着您需要在本地、开发环境或生产环境中运行时更改代码。

,

api 密钥/环境变量通常包含一些敏感信息。例如,token secret、db连接信息等,如果直接将它们放入版本控制中,这些敏感数据可能会泄露给不受欢迎的人。

此外,通过抽象这些变量,我们可以在构建和运行项目时更轻松地配置它们。例如,如果我们想使用相同的代码库启动多个服务器,但我们希望每个服务器都连接到不同的 MongoDB 实例,我们可以只配置环境变量,而无需更改代码库。