PHP数据库密码加密,扩展层解密
团队开发中,PHP 工程中的代码是明文的,包括数据库的连接信息。 当人员频繁变动时,对于小团队来说,数据库密码只能频繁变动,才能保证数据的安全。
市面上有很多方案,例如:将密码放到 php.ini 中,或者通过第三方依赖,这些方案虽然一定程度上能保障安全。但最终,还是会有很多有权限人能以各种方式直接看到明文密码。 有没有一种办法,让明文密码消失呢? 我自己实现了一个办法:PHP 代码中只有加密后的数据库密码。然后在 PDO 扩展中增加解密算法,因为 .so 文件是基本无法破解的(或者破解很费劲),所以从根本上解决了安全问题。
为了方便有兴趣的同学自己制作,我把制作过程形成了文档
因为修改 PDO 扩展有一定的门槛,其他同学可以直接使用这个 PDO 扩展。
- 下载 pdo.so 文件
- 查看你的 phpinfo() 配置(或者:php -i |grep 'extension_dir')
- 放到你的 so 库目录中(旧的 pdo.so 注意备份)
- 重启(容器或者服务)
- 加密你的秘钥:https://tools.uri.wiki/pdo/
- 将加密后的秘钥配置到你的代码中
PHP适用版本:7.4.12、7.4.13、7.4.14 其他版本请自行确认。 因使用的算法相对简单,只是简单做了层加密,对安全有更高需求的同学,就不要使用了。 更好的算法,请上传代码或联系作者:lsj87467517@163.com