20170113 午夜俱乐部

2017-01-12 23:53:10 +08:00
 icedx
2501 次点击
所在节点    天黑以后
19 条回复
DoraJDJ
2017-01-12 23:59:19 +08:00
自己试着做了一个用户登录系统,原来没有想象中的那么难





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

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

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


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

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

可以参考下 Python 的 itsdangerous 这个包
挺好用的
wjm2038
2017-01-13 00:12:57 +08:00
@DoraJDJ 最好不要可逆的吧,我觉得应该还是用户名加什么其他的加个密, md5(md5())
isCyan
2017-01-13 00:13:12 +08:00
@DoraJDJ 这用户系统,就简单的注册登录找回密码呀这些真要做得好很难呐,我自己试过发现需要考虑的地方比想象得多很多,要做得人性化用着舒服更难
Kilerd
2017-01-13 00:17:50 +08:00
@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
2017-01-13 00:18:17 +08:00
https://ooo.0o0.ooo/2017/01/13/5877abcfd22a9.png
https://ooo.0o0.ooo/2017/01/13/5877abcfd3322.png

图片怎么就显示不了呢???
Kilerd
2017-01-13 00:22:07 +08:00
@DoraJDJ 刚刚说的,是 session 或者 cookies 的储存方法。

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

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

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

简单的还是上 SHA3 吧。


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

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

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

不知道 sha1 和 sha3 之类的有什么区别。
wjm2038
2017-01-13 00:30:44 +08:00
@DoraJDJ 再来一个 key 为 userid 的应该就可以了吧
Kilerd
2017-01-13 00:30:57 +08:00
@DoraJDJ koa 自己有安全措施就不用折腾了。不安全的话早就发 issue 了。

我刚刚说的那个 密文.hmac 是用在 oauth2.0 服务器向站点回送 token 之类的信息所做的安全措施。
DoraJDJ
2017-01-13 00:33:46 +08:00
@Kilerd 希望是这样,我明天试着篡改下 cookie 看看会不会出什么幺蛾子吧 😂
Kilerd
2017-01-13 00:40:23 +08:00
@DoraJDJ 他的 key 就相当于对称加密的密码。他先加密存起来,需要用的时候试图解密,成功就用,不成功就等于没传入这个 cookies 一样,本质都是对称加密。
Vladimir
2017-01-13 00:42:59 +08:00
仔细想想低配 nmbp 就能满足我了
green15
2017-01-13 01:00:21 +08:00
计划提前,摊手

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

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

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

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

© 2021 V2EX