将连接字符串添加到版本控制是否安全?
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
中,连接字符串存储在一个环境变量中,每隔几个小时就会更改一次。
我有一个 Sails 应用程序,我想将其中一个配置文件 (connections.js
) 添加到版本控制中。此文件包含数据库的主机和端口号,但没有任何应用程序机密或密码。将此添加到 git 是否安全,还是仍会被视为不良做法?
所有连接参数都应该在配置文件中。
您可以使用 config
包之类的东西来定义所有需要的参数、它们的默认值并为您使用的所有配置(例如开发、生产、测试配置)创建配置文件。
显然这些配置文件不应该存储在版本控制中。您可以存储默认配置文件的模板。
当某些连接参数在代码中定义后,如果您的版本控制主机更改了其 IP 地址或其他内容,一段时间后您将不得不更改它们。
当然,将您的凭据 commit/push 用于任何源存储库都是不安全的。将它们存储在生产环境中甚至是不安全的。一种解决方案是从 environment
中读取连接字符串和类似项的值。在 Node.js
中类似于此代码:
const pool = new Pool.Pool({ connectionString: process.env.DATABASE_URL });
这是云解决方案中的常见做法。有时会应用更多的证券。在 Heroku
中,连接字符串存储在一个环境变量中,每隔几个小时就会更改一次。