作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Strapi 框架(据我所知)要求在启动时提供数据库密码。通常,密码在 database.js
中指定。文件,像这样:
module.exports = ({ env }) => ({
defaultConnection: 'default',
connections: {
default: {
connector: 'bookshelf',
settings: {
client: 'postgres',
host: '/cloudsql/myDatabaseInstanceName',
database: 'databaseName',
username: 'databaseUsername',
password: 'databasePassword',
},
},
},
});
这当然不是很安全,因为
database.js
文件通常提交给 repo。
database.js
。文件,而不是将其存储为环境变量:
module.exports = ({ env }) => ({
defaultConnection: 'default',
connections: {
default: {
connector: 'bookshelf',
settings: {
client: 'postgres',
host: `/cloudsql/${env('INSTANCE_CONNECTION_NAME')}`,
database: env('DATABASE_NAME'),
username: env('DATABASE_USERNAME'),
password: env('DATABASE_PASSWORD'),
},
},
},
});
但是,这也不是很安全。在许多运行时环境(包括我正在使用的 Google App Engine)中,任何项目用户都可以以纯文本形式查看环境密码。
database.js
启动时的文件。但我不明白如何实现?是否可以从
database.js
访问 secret 保险库? ?或者,我还能如何将我的数据库密码安全地注入(inject) Strapi?
最佳答案
使用dotenv和 dotenv-defaults包。
对于默认值和非关键值,请使用“.env.defaults”文件并将此文件提交到您的 VCS。 这将为其他开发人员提供一键式环境设置。
如果您的团队成员想要覆盖值,他们应该在本地开发环境中使用 gitignored ".env"文件。 这将防止错误的提交。
在您的服务器中,在外部定义环境变量并使用它们而不将它们嵌入到您的代码中。 这将为您的现场制作环境提供安全性。
与这些包的文档一样,您可以使用这些文件或环境变量中的任何值,如下所示
....,
password: process.env.MY_PASSWORD,
....
关于node.js - 如何在 Strapi 中安全地设置数据库密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67521100/
我是一名优秀的程序员,十分优秀!