想问看大家是如何安全的存储 Web 项目的数据库密码?

2016-06-18 13:52:59 +08:00
 RangerWolf
目前是存放在配置文件之中。 因为代码会托管到第三方的 git 服务,所以线上数据库的配置文件跟本地是不一样的。需要手动上去替换。

首先感觉这种方式麻烦了点,因为是 tomcat 的项目,每次更新 war 包之后都得重做一遍。
另外目前并不知道用哪种加密存储密码好一点? 数据库密码是明文存储~
3986 次点击
所在节点    问与答
16 条回复
3dwelcome
2016-06-18 14:06:37 +08:00
最好是编译进二进制库里、我 mysql 数据库密码只是简单 round 一下、保证不是明文储存就可以了、防君子不防有心人。
bdbai
2016-06-18 14:34:32 +08:00
用环境变量,代码动态读取。
SoloCompany
2016-06-18 15:14:21 +08:00
配置和代码分开,代码托管给第三方,配置用自己维护的 vcs 或不 vcs
RangerWolf
2016-06-18 15:31:02 +08:00
@3dwelcome 不太明确你的意思, 能举个例子吗? 谢谢
RangerWolf
2016-06-18 15:31:38 +08:00
@bdbai 你这个方法感觉还不错~ 只不过加密部分呢? 还是明文存储吗?
jarlyyn
2016-06-18 15:38:46 +08:00
不放心的话,不要用第三方 git 不就好了
bdbai
2016-06-18 16:12:11 +08:00
@RangerWolf 我用 Docker 部署应用就是这样处理的。只要环境变量不直接暴露出来,并保证外界无法直接接触数据库,基本上没问题。
密码最好不要明文,可以用一些相对耗时的加密算法保证即便被脱裤也不会泄露明文。关键词 bcrypt
xiaoding
2016-06-18 17:27:30 +08:00
配置文件里面放密文,程序启动的时候通过数据库连接池调用密钥管理系统解密。密钥管理系统负责管理加密算法以及密码的定时更新等等。
akira
2016-06-18 17:41:27 +08:00
代码仓库里面不带配置就好了啊
caixiexin
2016-06-18 20:55:18 +08:00
1. 用配置中心保存配置,程序每次启动从配置中心读
2. 用环境变量
3. 在生产的机子上构建 war ,维护一个分支包含生产配置文件,该分支只推送到生产的机子上
loading
2016-06-18 20:56:16 +08:00
环境变量
RangerWolf
2016-06-19 08:24:31 +08:00
@xiaoding 太高级了 有推荐的密码管理系统吗? 感谢!
RangerWolf
2016-06-19 08:25:03 +08:00
@jarlyyn 因为密码而自己维护 git 托管总觉得性价比不太高 哈哈
RangerWolf
2016-06-19 08:25:49 +08:00
@caixiexin 能介绍一下配置中心吗? 或者有什么推荐的服务或者开源程序,我直接去看看 谢谢
caixiexin
2016-06-19 08:57:02 +08:00
@RangerWolf 简单点的话随便写个 web 服务就行,限制外网访问。
xiaoding
2016-06-19 13:03:28 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX