数据库明文保存密码的坏处是什么?

Tips:点击图片进入下一页



重编辑一下,去掉一些不必要的细节。今天我看到前来支持的工程师直接从数据库里查询了一个工号相对应的密码,我问他“你们开发的这个系统存密码时都直接存明文不做一下hash?”他说,可以做,但没必要,能访问到数据库的人都是做支持的工程师,普通职员查不到别人的密码,明文存储是为了便于调试。我总感觉哪里不对却不知道怎么反驳,我的同事也一言不发,难道现在明文存储密码才是主流?


网友评论:


直接问“你难道信任所有的工程师吗”

顺便不曝光下这是哪家智障公司吗?
隔壁fb,6亿密码被自己人查询了百万次

而且就算不防工程师,也要防一下被人脱裤吧

— from samsung SM-G955U, Android 8.0.0 of Next Goose v2.1.0-play
直接说,我去你妈的,你不就是想撞库吗
还没必要,有毛病吗?
做个hash,弱智都会
楼主好好装电脑,别想太多

我主要是怕以后密码如果真的泄漏了我要背锅,至于这个公司的开发水平我一点都不在意

—— 来自 samsung SM-C7010, Android 8.0.0上的 v2.1.2


坏处大家都懂,好处他说的也没错,这事不立法,很难说对错,最多来句不负责任。但话说回来,站在开发商角度讲,他的责任不是缩减成本么.......

另外***这类物理隔离的系统,密码不都是123456a么.....你初始搞复杂了人家只会写个纸条贴屏幕上

编辑:
啊草,刚回复发现LZ把系统关键词去了,那我也改一下把。


不能说,虽然这个公司的系统不止我所在的单位在用,但我还是怕暴露单位信息

—— 来自 samsung SM-C7010, Android 8.0.0上的 v2.1.2

物理隔离倒是事实,但这种“明文存储密码天经地义”的意识让我感觉很奇怪,我本人几乎没学过计算机安全相关知识,但我甚至在做普通课设时都会先hash再存密码,感觉好像潜意识里就觉得密码不该直接存在数据库里

—— 来自 samsung SM-C7010, Android 8.0.0上的 v2.1.2
不是很懂。。体量不大的话应该没多少成本吧?
应立法禁止

道理上没错,合格的设计者的确应该这么去设计。

但我个人觉得还没到天经地义的程度,
至少我们曾因数据不可逆被不可说的要求整改


编辑:鉴于有人误以为我提到的“密码不完全对称”是指非对称加密,我强调一下,这里是指密码不是“121”这样的回文而不是指计算机上用到公钥私钥的那种加密方式

其实我觉得如果只是为了让工程师调试的话随便用一种可逆的方式加密存储就行了,最简单的办法之一就是把密码反过来存,比如123就存成321,这样只要密码不是完全对称(回文)就能起到加密作用而且方便还原

—— 来自 samsung SM-C7010, Android 8.0.0上的 v2.1.2

老哥你这是五十步笑百步啊。

—— 来自 OnePlus ONEPLUS A6000, Android 9上的 v2.0.4-play
不立法就没什么天经地义呀。从工作环境用户设置密码习惯的隐私,引申到普通环境用户的隐私,看看现在国内bat用户协议里都明着写会翻用户底裤,出处是前一阵一贴介绍广告公司和“声饵”相关内容

  -

抬个杠,有一种情况是,你什么都不做,那些挑刺的部门可能会什么都没注意到。
但是你要做点什么事吧,那需要写功能、模块描述吧,要写开发逻辑吧,这时候质管什么的部门就有挑刺的空间了,加密等级够不够、性能够不够、如何保证调试时安全、后续调试人员进场流程如何.......等等等等,写个可行性方案,发给各部门评审、再组织专家评审.....


不过也是事实,十几年前,在IBM和爱立信就是这么个干活环境。


明文密码怎么就便于调试了?哪种调试非得要密码明文的?

数据库里存hash,客户端直接发hash过的密码,服务器从数据库里取hash出来比对,这个过程要什么明文,哪个公司的xx程序员,这水平也能找到活干那it行业缺口真是比想象的还大

还有楼主你拿密码反转然后存数据库也是想象力十足,一定要根据数据库里的结果的话,搞个无权限的账号,密码固定记这个固定密码的hash不就行了

—— 来自 vivo NEX S, Android 8.1.0上的 v2.0.4-play


已经立法了,有网络安全法,法律要求重要数据要加密处理,一些个人信息,以及涉及密码的肯定也是重要数据。
出事了,或者被公安抽查到了会有警告和罚款。
搜到v2ex的相关讨论 贴一下


===
明文存储不是主流,你们的支持是懒,主流数据库都自带加密,实现也并不复杂。
安全工作要考虑最坏的情况,考虑到拖库后信息泄密,数据加密能争取一些时间修补漏洞提醒用户修改密码,增加破解成本等。
跟他们谈安全大概也没用,你跟支持说现在法律下,这系统已不合时宜,他们团队商量一下怎么改。现在提出问题,他们不重视,以后出了事罚款或警告,闹得不愉快,就全是他们的责任了,勿谓言之不预


智障行为

—— 来自 Xiaomi Redmi Note 7, Android 9上的 v2.1.2

???你这是哲学老师教的cs吗

—— 来自 smartisan DE106, Android 8.1.0上的 v2.1.2
lz可以看下啥叫系统设计里面的end-to-end argument。http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf
我们公司都是把用户的密码写在小本本上,然后用户登录的时候手工对照的。


楼主的加密水平还停留在反转的程度,怪不得怼不回去。就算你把所有字符打乱做个映射,在现代密码学面前都相当于明文。这种加密属于上百年前,二战的入门都达不到。
不完全对称加密承包了我今天的笑点,楼主你找本密码学的书或者上维基看看非对称加密到底是什么意思再来发明这些新概念。

— from Google Pixel 2, Android 9 of Next Goose v2.1.0-play


不如说明文密码好处是什么,记不住贴个memo就是了http://engineering.purdue.edu/ece404/
我校的加密学/网络安全课程
楼主感兴趣的话可以自学一下
这就是安全意识低下的体现

安全要做的是从源头杜绝泄漏的可能性,而不是依赖人员的操作。你咋知道进来的工程师就没有歹人呢。如果出了歹人,这个锅请你背好。
既然有同事听到了这对话 那就打个稍微正式点的报告给你上一级领导 管不管是他的事 楼主你可别背锅
不要信任人性,也别考验人性

你看错了,我没说这种方法是“不对称加密”,虽然我几乎没学过计算机安全,但计算机科学导论上就讲过不对称加密是要有公钥和私钥的,我说的是对“非回文”(即不是121这种对称的密码)进行修改

—— 来自 samsung SM-C7010, Android 8.0.0上的 v2.1.2


这个说的太宽泛了,我看到这一条立刻就能想到,数据库本身就有账号密码是加密的,你往里面存的数据自然本来就是加密的,所以即使存明文实际上也不会触犯这条法律……………
我觉得这里面其实两个问题:一个是计算机技术发展过快导致太多工程实践落后于当前技术现状。一个是又上一个问题导致的没有一整套既定的,可重复的工程流程(现在很多项目的管控其实仅仅到管理的级别,没有到开发的级别)导致立法模糊不清晰

—— 来自 Xiaomi Mi Note 2, Android 8.0.0上的 v2.1.2
搜集一下卖网上  是不是就是大数据?

  -
只是hash的话和明文没区别
你跟领导提一下
看一下等保方面的东西吓唬吓唬领导吧,哈希加个盐我寻思也改不了很多东西。
楼主你假设下数据库里存的是银行卡号密码

— from OPPO PAAM00, Android 8.1.0 of Next Goose v2.1.2
hash码不是直接扔谷歌就有明文了么。。。

意思这家公司为了查原来的密码所以明文存么。不应该是直接改成新密码么

不是为了找回密码,只是发现某个工号在系统里的表现和预设角色不一致,所以要登上去做些操作然后debug

—— 来自 samsung SM-C7010, Android 8.0.0上的 v2.1.2

murmurhash3之后的还能找到原文我觉得也是很厉害了
再加一点儿salt

不用md5和sha1就好了。

lz你这水平和对方是一个层次的,当然无力反驳

—— 来自 Xiaomi MI 6, Android 8.0.0上的 v2.1.2
用哈希值不是标准操作吗,工程师想看你的数据还需要密码?
很多人都用通用密码啊,可以拿这些信息去试银行卡。

你举例的是身份鉴别,授权访问,和一般意义的加密不一样。这里的加密单纯是数据的加密。有绕过身份鉴别拿到数据的方法,例如sql注入。访问数据库并非一定要管理员的密码。一个人的身份认证可以伪造,可以绕过。加密的结果已经是结果,只能由密文来猜明文。

例如,你坛把帖子放在数据库里。你点击帖子标题就相当于访问数据库,发送了一个数据库的查询,查询结果显示成网页。你回复一个帖子,就相当于对数据库内容做了一个增加的操作。帖子的内容不属于重要数据,所以可以明文存储。

如果论坛的代码有问题或服务器配置有问题,发现存在漏洞,那么别有用心的人或许可以通过构造一个复杂的查询,查询到那张有账号和密码的表。这个过程中不需要管理员的账号密码。
如果这时候得到的重要数据是加密处理的,就可以争取到更多时间来做一些事后处理。

我的意思不是指技术上的问题,我做后端开发的也知道sql注入之类的东西。我是指那个法律条文其实可以有很多种解释方法~~~

—— 来自 Xiaomi Mi Note 2, Android 8.0.0上的 v2.1.2
设个毛密码,一堆用户不改初始密码,一堆忘记改后的密码要求重置密码,一堆设的密码和其他平台是通用的,就他妈不应该有密码这玩意

点进主页看看楼主历史发帖就懂了


泥潭之前也有个帖子,也是有人觉得hash什么的想解就可以解。。。

真清楚hash过程以及hash碰撞原理的人不可能说出什么"hash扔到google就有明文"这种不负责任的话的

—— 来自 vivo NEX S, Android 8.1.0上的 v2.0.4-play
他们内部系统,码农当然是方案越简单越好,能用就行…