技术解析

大家 web 开发时,是怎么样保障正式数据库的账号安全的?
0
2021-06-07 04:53:55
idczone
大家开发程序时,程序连接数据库一般怎么保存账号和密码的?

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


我感觉 2,3 也都不是很安全啊,大家有什么办法?
作为类库,写死在程序里。但是程序是编译后的二进制代码,除非黑客挂着内核来调试,否则也看不到数据库密码明文。

配置文件明文,好维护。
都搞到配置文件了,说明都被日穿了。

或者直接把数据库也封装成 linux vm 黑盒,对外提供数据访问 API,用的时候就一个开一个 kvm 。
kvm 里写一些保护措施,比如和本地地址绑定后,接口才能正常运行。黑客一旦复制 kvm,没有 root 密码,也解不开进不去。数据就很安全。

配置文件+网络环境隔离

配置文件明文就够了

测试环境有专门的测试库,密钥可以写在配置文件里,里面也不能保存敏感真实数据。
生产环境一般用密钥管理系统,通过发布脚本在发布过程中自动化获取密钥,同时限制好网络的访问等。
这样基本上确保密钥或者数据库连接凭证只存在于机器内存中,同时因为网络限制只有特定应用服务器可以连接特定的库和表,最大限度的保障了安全。

"都搞到配置文件了,说明都被日穿了。", 能多防几层总是好的,以前 CSDN 数据库被拖库,就都是明文才那么惨。
如果数据是加密的,黑客还要摸索程序,搞清解密算法。相对要安全一点点吧。

能入侵服务器,都白搭,做好密码不可逆才是关键

数据库地址和账号密码的密文从配置中心读取,本地配置文件存放机密的密钥。
这样关键参数密文和密钥分开来放,另外数据库访问也做了 ip 白名单机制,这样除非是权限很高的内鬼,基本不担心数据库安全问题。

密码明文在配置文件,但是配置文件是自己写的私有格式

写死到源码的一个配置结构,有什么问题吗?
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服