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

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

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

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

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

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

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

© 2021 V2EX