为什么我需要为我的服务器隐藏 api keys/environment 变量?

Why do i need to hide api keys/environment variables for my server?

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

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

我对此很困惑。 :(

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

api keys/environment 变量通常包含一些敏感信息。例如token secret, db connection info等。如果直接将它们放入版本控制中,这些敏感数据可能会泄露给不想要的人。

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