大家 web 开发时,是怎么样保障正式数据库的账号安全的?

2021-03-29 11:19:28 +08:00
 godall
大家开发程序时,程序连接数据库一般怎么保存账号和密码的?

1. 写死在程序里(应该除了大学实习外没人这么干了)
2. 写在配置文件里——明文(很多人都这么用)
3. 写在配置文件里——加密(很多人都这么用)
4. 其他


我感觉 2,3 也都不是很安全啊,大家有什么办法?
8161 次点击
所在节点    程序员
75 条回复
3dwelcome
2021-03-29 11:25:01 +08:00
作为类库,写死在程序里。但是程序是编译后的二进制代码,除非黑客挂着内核来调试,否则也看不到数据库密码明文。
ysicing
2021-03-29 11:30:25 +08:00
配置文件明文,好维护。
都搞到配置文件了,说明都被日穿了。
3dwelcome
2021-03-29 11:32:03 +08:00
或者直接把数据库也封装成 linux vm 黑盒,对外提供数据访问 API,用的时候就一个开一个 kvm 。
kvm 里写一些保护措施,比如和本地地址绑定后,接口才能正常运行。黑客一旦复制 kvm,没有 root 密码,也解不开进不去。数据就很安全。
misaka19000
2021-03-29 11:33:53 +08:00
配置文件+网络环境隔离
T0m008
2021-03-29 11:34:33 +08:00
配置文件明文就够了
xiaoding
2021-03-29 11:36:20 +08:00
测试环境有专门的测试库,密钥可以写在配置文件里,里面也不能保存敏感真实数据。
生产环境一般用密钥管理系统,通过发布脚本在发布过程中自动化获取密钥,同时限制好网络的访问等。
这样基本上确保密钥或者数据库连接凭证只存在于机器内存中,同时因为网络限制只有特定应用服务器可以连接特定的库和表,最大限度的保障了安全。
3dwelcome
2021-03-29 11:38:17 +08:00
@ysicing "都搞到配置文件了,说明都被日穿了。", 能多防几层总是好的,以前 CSDN 数据库被拖库,就都是明文才那么惨。
如果数据是加密的,黑客还要摸索程序,搞清解密算法。相对要安全一点点吧。
leafre
2021-03-29 11:40:38 +08:00
能入侵服务器,都白搭,做好密码不可逆才是关键
wakzz
2021-03-29 11:50:07 +08:00
数据库地址和账号密码的密文从配置中心读取,本地配置文件存放机密的密钥。
这样关键参数密文和密钥分开来放,另外数据库访问也做了 ip 白名单机制,这样除非是权限很高的内鬼,基本不担心数据库安全问题。
SingeeKing
2021-03-29 12:05:21 +08:00
密码明文在配置文件,但是配置文件是自己写的私有格式
CEBBCAT
2021-03-29 12:18:31 +08:00
写死到源码的一个配置结构,有什么问题吗?😂

服务器和数据库都是一家云服务商的
godall
2021-03-29 12:52:58 +08:00
@ysicing 不是为了防外人,主要是防内部开发人员啊。
l4ever
2021-03-29 12:53:37 +08:00
连接字符串里面的密码也可以加密啊.
wangyanrui
2021-03-29 12:54:08 +08:00
大部分都是配置文件明文

话说配置文件都被人拿到了,还玩个鸡毛?
wangyanrui
2021-03-29 12:55:28 +08:00
防内部人员的话就系统环境变量呀,dll 呀什么的

但是总归是有人要知道吧,这个防的没太大必要
masterclock
2021-03-29 13:10:44 +08:00
configmap 和 vault 都用
CodeCodeStudy
2021-03-29 13:17:33 +08:00
MySQL 是用户名加主机名来区分用户的,主机名设置只允许连接的内网 IP 地址即可
nutting
2021-03-29 13:23:45 +08:00
当然是服务器才能直连,然后其他的操作要通过 web 审计平台上操作
wanguorui123
2021-03-29 13:32:46 +08:00
哈希+盐、加密+盐,但是都不能防止入侵服务器
markgor
2021-03-29 13:51:14 +08:00
1 、配置文件 不属于程序里吗?
2 、正常情况下,能查看到 1 、2 、3 里的,说明已经被 getshell 了吧?都被 GETSHELL 了剩下的顶多时间问题,再不是我也不解密,我顺着你的程序写个脱裤的?
3 、“能多防几层总是好的,以前 CSDN 数据库被拖库,就都是明文才那么惨。” ---不敢苟同,“能多防几层总是好的”,但也要用对地方..否则只是浪费时间....“以前 CSDN 数据库被拖库,就都是明文才那么惨。” CSDN 不是因为数据库密码泄露被脱裤,明文保存 是指数据库保存的密码是明文的...和配置文件没多大关系吧?

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

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

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

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

© 2021 V2EX