数据库访问程序别在对密码加密了,那是掩耳盗铃的做法
Posted lynnlovemin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库访问程序别在对密码加密了,那是掩耳盗铃的做法相关的知识,希望对你有一定的参考价值。
各位看官一看到我这个标题,可能会一脸懵逼,这也是我在实际项目发现的问题。
我发现,很多不懂安全的工程师,在搭建项目框架时,在涉及到密码的配置项时,喜欢对密码做一层加密,这样做表面像好像密码没有暴露在外,比如这样的:
表面上一看,确实看不到密码,但是作为黑客,这种跟明文密码一样是裸奔,我们一看,下面有个privateKey,就知道是个RSA加密的,他的逻辑就是在应用启动时,框架会对密文进行解密再进行数据库连接,密码是个16进制字符串,我们知道RSA加密后一般以Base64呈现的,把16进制转换成Bas64就行了,然后用RSA解密就能拿到密文。比如:
对密码进行加密的人的初衷可能是希望配置泄露时,别人也进入不了数据库,就刚才这样,真的配置泄露了,不是很容易就能解密么?有什么意义,而且多了 一层加密,维护也麻烦。
再比如,像Spring Cloud中有个Spring Cloud Config框架,也有对密码加密的端点(EndPoint),也没有意义,你配置代码都泄露了,稍微跟踪下代码,也很容易破解。
真要提升安全性,防止源码泄漏才是王道,把精力花在配置加密上,没有任何意义。
也有人说了,对生产环境加密也是为了防止开发人员登录生产环境,我想说,开发人员都有代码,你把生产配置放到代码里,不是找死么,想破解还不容易?正确做法是生产配置统一放到服务器,部署时统一拉取。
以上是关于数据库访问程序别在对密码加密了,那是掩耳盗铃的做法的主要内容,如果未能解决你的问题,请参考以下文章