V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
QQ1685425675
V2EX  ›  问与答

网易的密码泄漏了,请问下 django 写的网站,在不泄漏 SECRET_KEY 的情况下,攻击者脱裤后有多大可能破解密码

  •  
  •   QQ1685425675 · 2015-10-20 09:03:30 +08:00 · 3441 次点击
    这是一个创建于 3117 天前的主题,其中的信息可能已经有所发展或是发生改变。

    SECRET_KEY 好像是用来加密的

    如果这个东西不泄漏

    数据库被人拖走了

    那么 密码被破解的几率大吗

    攻击者有什么办法 最大可能的尝试破解密码呢

    第 1 条附言  ·  2015-10-20 14:29:06 +08:00
    结贴

    感谢大家的回复

    目前问题已经解决

    我把大家的回复整理一下如下:


    SECRET_KEY

    并不参与密码本身的加密,该参数用来加密 cookie 的,但泄漏该值会带来 [远程代码执行] 参考 http://rickgray.me/2015/09/12/django-command-execution-analysis.html


    django 本身的密码加密,是非常安全的, 用了随机盐 什么的 反正很复杂

    参考 https://docs.djangoproject.com/en/dev/topics/auth/passwords/
    22 条回复    2015-10-20 13:42:54 +08:00
    ryd994
        1
    ryd994  
       2015-10-20 09:43:25 +08:00   ❤️ 1
    SECRET_KEY 不就是一个固定的“盐”么
    用了等于没用
    zander
        2
    zander  
       2015-10-20 09:45:14 +08:00 via iPhone   ❤️ 1
    没什么意义,要以最坏的打算来预估对方的算力。
    watzds
        3
    watzds  
       2015-10-20 09:51:08 +08:00 via Android   ❤️ 1
    @ryd994
    有了这个盐值,相当于密码很复杂,普通的字典还能查到破解吗
    Zzzzzzzzz
        4
    Zzzzzzzzz  
       2015-10-20 09:53:29 +08:00   ❤️ 1
    SECRET_KEY 涉及的是 cookie 的加密, 和 auth 无关, auth 的密码是随机 hash 算法+随机 hash 次数+随机 salt
    ryd994
        5
    ryd994  
       2015-10-20 09:53:50 +08:00   ❤️ 1
    @watzds
    聪明一点的人就自己注册一个用户,从库里找到自己密码,然后穷举 SECRET_KEY 就行了
    且不说网上是有常见密码的带盐字典的,
    如果我没有记错, django 用的是 sha1 还是 md5 ,这两个都超快,临时暴力做个字典也是可以的
    QQ1685425675
        6
    QQ1685425675  
    OP
       2015-10-20 09:55:55 +08:00
    @Zzzzzzzzz 哦哦谢谢 也就是说, django 的安全性还是很高的 对吗
    messense
        7
    messense  
       2015-10-20 09:56:39 +08:00
    @ryd994 By default, Django uses the PBKDF2 algorithm with a SHA256 hash
    messense
        8
    messense  
       2015-10-20 09:56:54 +08:00   ❤️ 1
    virusdefender
        9
    virusdefender  
       2015-10-20 09:58:35 +08:00   ❤️ 1
    secret key 是加密 cookie 用的,如果这个泄露,可能造成远程代码执行。

    django 的 密码的盐就在加密后的字符串里面,加密强度还是挺强的
    zhchbin
        11
    zhchbin  
       2015-10-20 10:05:05 +08:00   ❤️ 1
    @QQ1685425675 数据库里存的东西安全性是由你决定的,框架并不会帮你干什么事。另外,框架也是可能存在漏洞,导致被黑的。 Google: site:wooyun.org django (看一下国内乌云论坛上的漏洞吧)

    目前正确的存储用户密码哈希的姿势: https://crackstation.net/hashing-security.htm
    glasslion
        12
    glasslion  
       2015-10-20 10:15:43 +08:00   ❤️ 1
    @ryd994 别搞笑了, django 什么时候用过 sha1, md5 做 salt 了?
    watzds
        13
    watzds  
       2015-10-20 10:21:37 +08:00 via Android   ❤️ 1
    @ryd994 似乎随机盐值还挺有效的

    另外,这篇乌云的文章不错, http://drops.wooyun.org/papers/1066
    ryd994
        14
    ryd994  
       2015-10-20 10:42:50 +08:00 via Android   ❤️ 1
    @watzds 所以我说如果 secret_key 做密码加密是药丸的
    然而我至今不明白为啥楼主的 Django 加密密码会用到 secreat_key
    dong3580
        15
    dong3580  
       2015-10-20 10:46:45 +08:00   ❤️ 1
    @QQ1685425675
    随机,那么这些随机的参数你生成了之后,怎么再次校验?
    caoyue
        16
    caoyue  
       2015-10-20 10:56:33 +08:00   ❤️ 1
    @dong3580
    一般是用 algorithm$number of iterations$salt$password hash 的方式存数据库
    zhaoshanhe
        17
    zhaoshanhe  
       2015-10-20 11:22:05 +08:00   ❤️ 1
    首先脱裤一般都是带着盐的 而且有点良心的厂商都是随机盐。 脱下来的数据要破解基本都是彩虹表。
    QQ1685425675
        18
    QQ1685425675  
    OP
       2015-10-20 12:08:53 +08:00
    @dong3580 随机的参数 也是存起来的吧, 可以校验,只是很难(基本不可能)逆向
    MrGba2z
        19
    MrGba2z  
       2015-10-20 12:11:30 +08:00 via iPhone   ❤️ 1
    secret key 和数据库无关吧…
    那不是用于 session 和 cookie 里的么
    wibile
        20
    wibile  
       2015-10-20 12:47:35 +08:00   ❤️ 1
    知之为知之不知为不知,不知还强答,在下服了。。。
    dong3580
        21
    dong3580  
       2015-10-20 13:39:29 +08:00   ❤️ 1
    @caoyue
    多谢普及知识,不过还得存储盐...虽然反不出原文,
    wy315700
        22
    wy315700  
       2015-10-20 13:42:54 +08:00   ❤️ 1
    要落到 NSA 手里, AES256 都没用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1975 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:06 · PVG 09:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.