V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iConnect
V2EX  ›  Twitter

twitter 到底干了嘛?怎么会出现用户明文密码

  •  
  •   iConnect · 2018-05-06 08:44:00 +08:00 · 11330 次点击
    这是一个创建于 2400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用户密码不是应该只保存 hash 过的吗?

    twitter

    30 条回复    2018-05-07 03:01:43 +08:00
    AlphaTr
        1
    AlphaTr  
       2018-05-06 08:46:29 +08:00
    哈希之前的日志记录了密码,没脱敏
    opengps
        2
    opengps  
       2018-05-06 08:53:28 +08:00
    估计某个程序员测试时候记录了明文日志,然后忘了去掉日志就提交生产环境了
    LazyZhu
        3
    LazyZhu  
       2018-05-06 09:30:17 +08:00   ❤️ 9
    Github 也出了这个问题, 内部调试日志出现了明文密码.
    不过得给 Github/Twitter 这种高度的用户透明度点个赞, 国内哪家大厂商有这个觉悟?
    wvc
        4
    wvc  
       2018-05-06 09:49:01 +08:00
    @LazyZhu 国内啥都是毒瘤啊
    julyclyde
        5
    julyclyde  
       2018-05-06 10:21:05 +08:00   ❤️ 2
    @wvc 国内啊,携程把信用卡卡号和 CVV2 写到日志里去了
    xmdhs
        6
    xmdhs  
       2018-05-06 11:16:02 +08:00 via iPad
    国内的估计没几个 hash 过

    所以国内的网站 万一裤子被脱了就。。。
    iX
        7
    iX  
       2018-05-06 11:18:25 +08:00 via iPhone
    @julyclyde 不是记录到数据库里了么?
    lany
        8
    lany  
       2018-05-06 11:23:11 +08:00 via Android
    调试代码忘记注释了
    0915240
        9
    0915240  
       2018-05-06 11:46:59 +08:00 via iPhone
    日志记录了密码



    emmmmm
    Va1n3R
        10
    Va1n3R  
       2018-05-06 11:52:37 +08:00
    貌似这个日志也是用户接触不到的。。。只有工作人员可以看到,其实也就是日志把明文密码在 hash 前先记录下来了。
    Raymon111111
        11
    Raymon111111  
       2018-05-06 12:04:26 +08:00
    是生产环境打了 log, 推特官方表示没有任何迹象表明这个有泄露, 但是改密码还是更保险一点.

    HN 上这个讨论还挺热烈的, 都在说能用手段避免这种情况发生.
    swulling
        12
    swulling  
       2018-05-06 12:06:23 +08:00 via iPhone
    客户端预 hash 可以解决,两次 hash

    客户端一次,服务端一次。
    PressOne
        13
    PressOne  
       2018-05-06 12:15:14 +08:00
    @Raymon111111 黑客没那么傻,以往公开的库都是几年前拖的,利用的没有价值了再公布的
    cairnechen
        14
    cairnechen  
       2018-05-06 12:51:37 +08:00
    @xmdhs 国内没几个 hash 过???你可能有啥误解吧,以为国内人人都是 CSDN 呢
    geeklian
        15
    geeklian  
       2018-05-06 14:16:26 +08:00 via Android
    其实银行的取款密码都没有 hash。

    不过 6 位纯数字,hash 不 hash 没区别。
    rogwan
        16
    rogwan  
       2018-05-06 14:20:40 +08:00 via Android
    @geeklian 银行是卡、密分离,这个还是有区别的。知道密码,没有实物卡偷不了钱。互联网账号则另说
    skyyp
        17
    skyyp  
       2018-05-06 14:23:24 +08:00
    想起了几年前的 CSDN 脱裤子事件
    xy90321
        18
    xy90321  
       2018-05-06 14:29:42 +08:00 via iPhone   ❤️ 1
    @swulling
    不防本质
    为了调试新加的本地 hash 代码所以又把明文密码打在了本地的 log 上 → 比打在服务器上性质还要恶劣 → 卒
    treo
        19
    treo  
       2018-05-06 14:47:00 +08:00
    @swulling https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/august/javascript-cryptography-considered-harmful/
    olaloong
        20
    olaloong  
       2018-05-06 15:27:27 +08:00
    twitter 发的邮件里面有解释

    关于此问题

    我们通过所谓的哈希转换流程,使用一个名为 bcrypt 的函数对密码进行掩码处理,即用随机的一系列数字和字母替代实际密码,存储在 Twitter 系统内。 这让我们的系统可以在不显示你的密码的前提下核实帐号身份。 这是行业标准做法。

    有一个问题导致密码在完成哈希转换前被写入一个内部日志。 我们自己发现了这个错误,移除了密码信息,并且正在部署计划以防这个问题再度发生。
    gy911201
        21
    gy911201  
       2018-05-06 15:57:24 +08:00   ❤️ 3
    @swulling 二次 hash 会降低值域,安全性会下降
    gy911201
        22
    gy911201  
       2018-05-06 15:58:50 +08:00
    Bcrypt 是目前非常适合用来 hash 密码的算法……还是建议用这个……而不是自己造轮子…………
    swulling
        23
    swulling  
       2018-05-06 16:23:29 +08:00 via iPad
    @gy911201 Twitter 就是用的 bcrypt,但是和这次是两回事。另外值域缩小对密码来说不是什么问题。


    @treo 所以两次啊,javascipt 一次,服务端一次。
    swulling
        24
    swulling  
       2018-05-06 16:24:41 +08:00 via iPad
    @xy90321 你还真别说,打到 console log 里没啥风险。。
    julyclyde
        25
    julyclyde  
       2018-05-06 17:01:58 +08:00
    @swulling 多次 hash 会缩小定义域,降低安全性
    Telegram
        26
    Telegram  
       2018-05-06 17:08:34 +08:00 via iPhone
    前面几位感觉有点跪舔了,密码明文就是明文,一视同仁的喷就对了,别说什么比国内透明。
    就算是日志里出明文,也不能让我理解。
    为啥不能前端先 hash 一次,然后提交到服务器,后端你再要怎么加密都没问题。
    20015jjw
        27
    20015jjw  
       2018-05-06 18:53:58 +08:00
    @Telegram 国内这方面几乎为 0 的透明度还是得喷啊
    agagega
        28
    agagega  
       2018-05-06 18:59:11 +08:00 via iPhone
    还是 Dropbox 的会玩。第一步 SHA 把长度统一,第二步 Bcrypt,第三步用一个全局密钥 AES 加密以防泄漏。
    param
        29
    param  
       2018-05-07 02:59:18 +08:00 via Android
    所以前端應該在提交之前先哈希一遍
    param
        30
    param  
       2018-05-07 03:01:43 +08:00 via Android
    @geeklian 即使是 6 位數字,也可以加鹽解決問題
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2622 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:43 · PVG 19:43 · LAX 03:43 · JFK 06:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.