Java技术栈
www.javastack.cn
优秀的Java技术公众号
Oh My God!
最近检查代码,发现某个系统登录的逻辑直接用明文查询数据库,然后栈长去看了下数据库表,居然是明文存储,简直不敢相信。。。
简单介绍下,这是一个企业内部系统,就几个功能点,公司某个部门的人在用,整个系统就由一个开发人员完成,这个开发人员毕业两年左右了,还算是初级开发。
密码为什么要明文存储呢?虽然只是一个小小的内部系统,但这也是不合规的,也是十分严重的安全隐患,我便去找这个系统的开发人员了解了下情况。
栈长:这个系统为什么要用明文存储用户密码?
开发:这是内部小系统,只有几个人在用,应该不用加密吧
栈长:系统不分大小,所有敏感信息都需要加密处理,更何况是密码,赶紧修改处理下
开发:好的,我的锅
虽然开发意识到自己的错误,但在如何使用加密问题上又犯难了,我让他直接参考了别的系统的加密逻辑。
这真是一个严重的、低级的安全问题,当然测试也有责任,没有检查数据,但更多的是开发没有这个安全意识,这个一旦发生事故,他被开除或者追责一点都不为过。
虽然低级,之前某些互联网公司也曾暴过明文存储导致大量用户和密码泄露的事故,那么,我们到底该如何安全的存储呢?一般有以下几种方案:
MD5(不推荐,不安全了)
AES(不推荐,密钥不好保存,可被解密)
3DES(不推荐,密钥不好保存,可被解密)
SHA1(不推荐,不安全了)
SHA256
SHA512
PBKDF2
bcrypt
scrypt
该使用什么方案加密很清楚了吧,栈长之前分享过一篇很详细的解答各种加密算法,大家可以看下,或者关注公众号:Java技术栈,在后台回复 "算法" 获取这篇文章。
通过这个事情,栈长真的体会到,现如今软件行业开发人员水平真的太参差不齐了,什么狗屎代码我都见过。
企业为了生存,节约成本,需要招些初级开发人员无可厚非,但真的有些开发人员就真的不动脑子想事情,对自己写的代码一点也没有要求,没有追求代码完美的意识……
当然,我也能理解,每天一大堆的 CRUD 业务需求都会让开发人员陷在里面不可自拔,哪来时间做代码优化、做思考?说句大实话,能准时下班,都没有几个公司能做到。
即使如此,这也不能成为写烂代码、写 BUG、不自我提升的理由。这完全也看人,看他想不想把事情做好,想不想提升自己,有没有对自己有要求。
栈长肺腑之言了,希望大家都对自己有点要求,才能成就更好的自己,不要成为同事心目中诟病的对象,自古至今,严于律己的混的都不会太差,一起加油吧,骚年们!
最后,你们公司用的什么加密方式,欢迎留言分享~