肯德基 24 小时外卖热线
4008-823-823
麦当劳 24 小时外卖热线
4008-517-517
睡觉之前和起床之后,要记得刷牙和用漱口水清洁口腔
icedx

20170113 午夜俱乐部

  •  
  •   icedx · Jan 12, 2017 · 2958 views
    This topic created in 3424 days ago, the information mentioned may be changed or developed.
    19 replies    2017-01-13 01:00:21 +08:00
    DoraJDJ
        1
    DoraJDJ  
       Jan 12, 2017
    自己试着做了一个用户登录系统,原来没有想象中的那么难





    不知道我的方案安不安全,密码加盐后,盐值存在另外一个表内,用户名和密码存放在用户表内,盐长度固定 32 , SHA256 配 HMAC 进行哈希运算。
    lostvincent
        2
    lostvincent  
       Jan 13, 2017 via iPhone
    还有半年就毕业了,为自己将来担忧
    要是可以活几个世纪该多好:(
    DoraJDJ
        3
    DoraJDJ  
       Jan 13, 2017
    @DoraJDJ 顺便问一下,大家觉得登录成功后 session 得怎么存储?

    是存用户 ID 还是用户名,或者是其他之类的东西?

    现在是用户名存 session 里,但是发现 koa-session 存的时候是将 session 用可逆转的 base64 编码存储,感觉有点不放心。
    Yishanshan
        4
    Yishanshan  
       Jan 13, 2017 via Android
    唉,又要过年了
    Kilerd
        5
    Kilerd  
       Jan 13, 2017 via iPhone
    @DoraJDJ 登录系统并不难做,我现在为自己的几个项目做一个统一的登录认证服务器,简化版的 oauth2 。


    怎么储存的话,用 aes 加密然后 hmac 签名一下就行
    密文.hmac

    这样既不怕被看到,也不怕被伪造。

    可以参考下 Python 的 itsdangerous 这个包
    挺好用的
    wjm2038
        6
    wjm2038  
       Jan 13, 2017 via Android
    @DoraJDJ 最好不要可逆的吧,我觉得应该还是用户名加什么其他的加个密, md5(md5())
    isCyan
        7
    isCyan  
       Jan 13, 2017 via Android
    @DoraJDJ 这用户系统,就简单的注册登录找回密码呀这些真要做得好很难呐,我自己试过发现需要考虑的地方比想象得多很多,要做得人性化用着舒服更难
    Kilerd
        8
    Kilerd  
       Jan 13, 2017
    @DoraJDJ
    ![1.png]( https://ooo.0o0.ooo/2017/01/13/5877abcfd22a9.png)
    ![2.png]( https://ooo.0o0.ooo/2017/01/13/5877abcfd3322.png)

    这是我设计的页面,这两天为了设计几个页面操足了心思。

    PS : LOGO 是小伙伴设计的。 不要在意 HTML 的 TITLE 信息, LOGIN 的色调也还没调好。
    Kilerd
        9
    Kilerd  
       Jan 13, 2017
    https://ooo.0o0.ooo/2017/01/13/5877abcfd22a9.png
    https://ooo.0o0.ooo/2017/01/13/5877abcfd3322.png

    图片怎么就显示不了呢???
    Kilerd
        10
    Kilerd  
       Jan 13, 2017
    @DoraJDJ 刚刚说的,是 session 或者 cookies 的储存方法。

    至于 密码怎么在库里面储存,直接用 安全的 hash 函数就行。

    不要用 MD5 , SHA1 !!!
    不要用 MD5 , SHA1 !!!
    不要用 MD5 , SHA1 !!!

    有能力的直接上 SHA3 ,或者对称加密 AES (这里也不推荐用对称加密,毕竟是可逆的,过不了用户那关)

    简单的还是上 SHA3 吧。


    不要信 6L 的说法, 即使是两层的 md5 都有了彩虹表可以跑了。 意义是跟 单层的 MD5 一样的。

    加盐的方法的话, 意义不大,主要是要挑选一个安全的不可逆算法,那么 SHA3 就是最好的选择了。
    feather12315
        11
    feather12315  
       Jan 13, 2017 via Android
    考试后,出去浪,一小时前刚回来。
    很幸福
    DoraJDJ
        12
    DoraJDJ  
       Jan 13, 2017 via Android
    @Kilerd 我现在也有点纳闷, Koa 的 session 中间件在使用时必须给 app 声明 keys 变量的值(估计就是用于安全类的?),但是存储的时候 cookie 用 base64 编码,还有一个 cookie 貌似就是标识符之类的东西,这种方法究竟安不安全。

    @wjm2038 我也想 session 不可逆,但这样的话我又怎么知道登录到的是谁的号呢?当时想做个用户验证系统时就经常因为这个问题给难倒。
    DoraJDJ
        13
    DoraJDJ  
       Jan 13, 2017 via Android
    @Kilerd 我也知道现在 MD5 破解一个彩虹表的事,所以我存密码时就用的 sha256 加 hmac 和盐,应该也足够安全吧。

    不知道 sha1 和 sha3 之类的有什么区别。
    wjm2038
        14
    wjm2038  
       Jan 13, 2017 via Android
    @DoraJDJ 再来一个 key 为 userid 的应该就可以了吧
    Kilerd
        15
    Kilerd  
       Jan 13, 2017 via iPhone
    @DoraJDJ koa 自己有安全措施就不用折腾了。不安全的话早就发 issue 了。

    我刚刚说的那个 密文.hmac 是用在 oauth2.0 服务器向站点回送 token 之类的信息所做的安全措施。
    DoraJDJ
        16
    DoraJDJ  
       Jan 13, 2017 via Android
    @Kilerd 希望是这样,我明天试着篡改下 cookie 看看会不会出什么幺蛾子吧 😂
    Kilerd
        17
    Kilerd  
       Jan 13, 2017 via iPhone
    @DoraJDJ 他的 key 就相当于对称加密的密码。他先加密存起来,需要用的时候试图解密,成功就用,不成功就等于没传入这个 cookies 一样,本质都是对称加密。
    Vladimir
        18
    Vladimir  
       Jan 13, 2017 via iPhone
    仔细想想低配 nmbp 就能满足我了
    green15
        19
    green15  
       Jan 13, 2017 via iPhone
    计划提前,摊手
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   846 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 21:09 · PVG 05:09 · LAX 14:09 · JFK 17:09
    ♥ Do have faith in what you're doing.