国内大公司都是如此没安全意识么?

2015-10-20 00:12:17 +08:00
 octref

前段时间的 XCodeGhost 事件,然后这回网易...

MD5 存密码不是和明文差不多了么。好歹加个 Salt 吧...

作为一个国外大学读本科的学生,要我来做我都会选 SHA256 + Salt, 网易是真的连这个都不懂的人在写 backend service 么? 没有专门的人负责 security 么? 没有 security audit 么? 一个亿的用户的资料啊...

虽然这次没有其它公司,但是前段时间 XCodeGhost 的一大列...

以后有点不想回国了 T T

8288 次点击
所在节点    程序员
65 条回复
stage37
2015-10-20 00:15:26 +08:00
不知道国外公司的安全意识怎么样,但是国外知名中小公司代码写得不怎么样的不在少数。

毕竟大家都是人。
oott123
2015-10-20 00:18:14 +08:00
“历史遗留”
“政策要求”
“我国国情”
dalaomj
2015-10-20 00:19:02 +08:00
时间,时间,时间 维度问题!!谁说数据是刚刚泄漏的?!
早期的互联网,明文或简单 MD5 就是网站开发标配。
比如: CSDN 在泄漏之前已经不是明文了,但架不住已经泄漏的老数据在黑产圈传播,然后某一天就抖给公众了。

简单的 md5 加密? 过去泄漏->现在解密(一般的库,彩虹表暴破,破解率已超过 95%)
现在很难破解的加密方式?封存数据->未来解密
安全这事,只能尽力。没有绝对。
crab
2015-10-20 00:23:05 +08:00
不知道在过 10 年,两步验证会不会也给破解了。
MaiCong
2015-10-20 00:40:34 +08:00
真的没有安全意识,我遇到的好几个项目都是一个 md5 加密完事。
eoo
2015-10-20 00:44:49 +08:00
那你就待在非洲吧 别回来了,中国很危险。
sogisha
2015-10-20 00:55:12 +08:00
不要用 MD5 ,不要用 SHA ,不要用 RIPEMD ,不要用 WHIRLPOOL ,不要用任何散列!

用 PBKDF2 ,或者 scrypt ,或者 bcrypt !

你的目的不是混淆密码,而是让人在获得密码存储后无法暴力破解。

存储密码要的是拖延破解的时间。单一散列不能。
ryd994
2015-10-20 01:14:35 +08:00
看来你没有认真上课。你算法教授没有提过 Big Omega 有什么意义么?
SHA256 + Salt 也是药丸的,尽管比 md5 是好多了。它们都是 hash
hash 太快了,一般来讲快肯定是好,无论是用于 hash 之后 cluster ,还是验证一个签名
然而对密码来讲, hash 越快,字典出来的就越快。即使加了盐,现在连带盐的字典都有。毕竟我们不需要覆盖所有密码,绝大多数用户用的都是弱智级的弱密码而已。有时候就是暴力硬上。
PBKDF2 等 Key derivation function 无法做到多快,却可以保证够慢。
slixurd
2015-10-20 01:17:22 +08:00
作为一个国内上大学的我都知道要 PBKDF2+SALT
楼主还是不要回国了。
ideacco
2015-10-20 01:18:35 +08:00
妹的,之前 CSDN 被脱换了一批密码,后来 SB 携程的信用卡被破,又换了一批,现在 163 也被脱。还得再换。都要崩溃了。求解决办法啊各位大神。
FrankFang128
2015-10-20 01:24:33 +08:00
本地加密
typcn
2015-10-20 01:34:52 +08:00
@ryd994 可以在客户端 /浏览器端做一次或几次 PBKDF2 之类的慢算法( 1 秒左右用户无感知,如果要做多次,可以显示个进度条),然后提交到服务器上,服务器上再做一次加盐的 Hash
octref
2015-10-20 01:58:21 +08:00
谢谢各位 告诉 PBKDF2 ,学习了。还没专门去上 security 的课,具体不是那么了解。至少应该用 SHA256 和 Salt 是 Web Programming 的老师教的。我想表达的是『不该用 No Salt 的 MD5 算比较常识的知识了』。

关于不想回国,不是说看不起国内的意思...只是感觉回来之后一是避不开各大公司的全家桶,二是现在一直用的网易云音乐前段时间是 XCodeGhost 现在又出现个这个事感觉有点...想普普通通用个手机没有烦恼好难。
lenran
2015-10-20 02:01:14 +08:00
你知道的,项目越大,漏洞越多。概莫例外
ryd994
2015-10-20 04:13:16 +08:00
希望大家至少读一读这篇文章,讲了常见的错误实现: https://crackstation.net/hashing-security.htm


@typcn 11 楼是更加错误的方法,那样的话,密码实质上就是客户端生成的结果。如果被脱库,我只需要以 PBKDF2 所有可能输出当作密码取值域,穷举服务器上的加盐 hash 就行。如果要登录用户的帐号,只需要 curl 发送结果,直接绕过 pbkdf2 部分。不能相信客户端可以操纵的任何数据,而你的做法正是以客户端会乖乖对输入内容做 pbkdf2 为前提的。

安全的登录页面必须用 TLS
安全的登录页面必须用 TLS
安全的登录页面必须用 TLS

不用 TLS 的所谓 JS 加密传输的库我也写过,无非是不懂的时候闹的大笑话而已。人家直接劫持 JS ,直接 post 一份到它们服务器。而用了 TLS 以后,密码要不要额外加密已经无所谓了。客户机器不安全的话键盘钩子都能偷密码,结果都一样。
ryd994
2015-10-20 04:28:51 +08:00
@octref 回国是必须跃 墙,会跃 墙的人并不会中 XCodeGhost
自己要多学,做一点小项目,做的时候认真思考,不要以能用而是以完美为目标,多 Google 。这些项目多半会坑掉,但你会学到很多。

课堂教的系统全面,但自己学的才是前进的动力。

CS 只是我副专业而已,然而我能在 CS 课上完爆 CS 专业的学长。无他,唯手熟尔。(国外 CS 课其实很水,不深的,这并不是坏事)单片机汇编 /Python/Linux ,虽然我也只是入门水平,但上课的内容都是玩剩下的,只需要查漏补缺就行。
如果你有兴趣,这点程度不难的。
yyfearth
2015-10-20 04:47:00 +08:00
@ryd994 https 是必须的前提
但是我还是觉得全部依赖 https 也不保险
我还是觉得前端做一次 pbkdf2 或者比较长的 hash 比较好
因为用比较长的 hash (比如 2048bit )作为后端初始密码 穷举的量还是很大的

至少不会因为 https 的漏洞 导致泄漏用户的原始密码(用来社工)
虽然前端 hash 不能增加系统的安全性 但是算是保护用户隐私的一个办法
尤其是对于大部分用户使用统一的简单密码 这样多一层保护 创建字典更加困难
Cavolo
2015-10-20 05:45:12 +08:00
@ideacco 1p 这种软件去生成,每个账户密码完全不同,就算一家公司泄露,也不会危及到其他
sogisha
2015-10-20 06:24:37 +08:00
@yyfearth 在有 https 的前提下几乎就是“你高兴就好”。我看到的问题是,用 js 搞 pbkdf2 是可行的,但 pbkdf2 比的是在相同时间内你能折腾出多少轮,越多越好。除非打算让用户等很久,否则之后就成了用 C 来爆破用 js 算出来的 pbkdf2 。。。
pxlxh
2015-10-20 08:18:57 +08:00
楼主这下优越感爆棚了吧
别回来了
ps :吐槽这种中英夹杂的半吊子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/229388

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX