将连接字符串添加到版本控制是否安全?

Is it safe to add connection strings to version control?

我有一个 Sails 应用程序,我想将其中一个配置文件 (connections.js) 添加到版本控制中。此文件包含数据库的主机和端口号,但没有任何应用程序机密或密码。将此添加到 git 是否安全,还是仍会被视为不良做法?

所有连接参数都应该在配置文件中。 您可以使用 config 包之类的东西来定义所有需要的参数、它们的默认值并为您使用的所有配置(例如开发、生产、测试​​配置)创建配置文件。

显然这些配置文件不应该存储在版本控制中。您可以存储默认配置文件的模板。

当某些连接参数在代码中定义后,如果您的版本控制主机更改了其 IP 地址或其他内容,一段时间后您将不得不更改它们。

当然,将您的凭据 commit/push 用于任何源存储库都是不安全的。将它们存储在生产环境中甚至是不安全的。一种解决方案是从 environment 中读取连接字符串和类似项的值。在 Node.js 中类似于此代码:

const pool = new Pool.Pool({ connectionString: process.env.DATABASE_URL });

这是云解决方案中的常见做法。有时会应用更多的证券。在 Heroku 中,连接字符串存储在一个环境变量中,每隔几个小时就会更改一次。