关于node.js里mysql数据库配置文件 写到哪里最安全
发布于 9 年前 作者 284099857 6290 次浏览 最后一次编辑是 8 年前 来自 问答

本人新手 不晓得这个mysql数据库配置文件写到哪里、以及怎么写才算安全

目前直接写到一个config.js 里 如QQ截图20160517145045.jpg

好家伙 这个config.js 别人知道文件名称以及路径的话

直接能访问 看到我的数据库配置

太可怕了

求教一下 好点的法子

18 回复

这是正确的通用的做法

另外只有设置为static的目录下的文件才能直接访问,不信你试试

大型系统可以搞个 configserver 做鉴权。

肯定不能访问啊,除非你这文件是放在public目录下的吧 要是能访问,你所有代码不都让别人看到了。

服务器目录怎么能让随便访问呢,

@TakWolf 我想知道咋能让node能运行并读取这个里的配置项、但是外界通过路径不能看到访问并且看到这个文件里的内容

@blackjack 哥哥 咋设置啊 目前我通过路径就是可以打开 他就是一个js文件啊

@yjhjstz 系统不大 但是不想把服务器数据库配置项暴露出来

@imhered 这是个js文件啊 浏览器输入这个文件路径 咋样才能访问不到啊

一般的js文件 知道该文件目录了 通过浏览器直接就能访问吧

生产环境不用配置文件 (推荐)

敏感信息作为Shell环境变量: $ APP_DB_USERNAME='xxxxx’ Node直接读这个变量: process.env.APP_DB_USERNAME

生产环境不得不用配置文件

不要版本控制这样的文件 用临时生成的文件 放在服务目录外 设置文件权限到只够APP使用

两种方式都可以用简单脚本自动化。

我的做法是: prod环境使用配置服务,限制内网访问,把pm2的启动json配置在配置服务中,db连接的参数可以配置在参数或env下,加载后使用pm2的start方法启动,参考: pm2 api

{
	"script": "app.js",
	"env": {
		"NODE_ENV": "production",
		"PORT":"1339",
		"DB_HOST": "<ip>",
		"DB_USER":"<username>",
		"DB_PWD":"<password>"
	}
}

数据库配置处可以这样写: host:process.env.DB_HOST||'localhost'

非公开的目录是不允许访问的 From Noder

@284099857 只有放在public文件夹下的文件通过浏览器才能访问,即前端所有文件, 你都写mysql配置了,肯定不能放在public文件下吧,也不属于前端文件了。肯定是访问不到的。不信你自己试试

以express为例,默认public下是可以通过路径访问的,其他的都不行

config文件是不能通过url访问的。 上面都说了,只有某个文件夹下的文件作为静态文件可以被url直接访问。

回到顶部