一个安全的 Web 用户登录系统应该怎样设计与实现?

2015-09-26 16:33:59 +08:00
 RTNelo
7128 次点击
所在节点    Python
21 条回复
giuem
2015-09-26 16:59:53 +08:00
不知道楼主对于安全的定义是什么。我认为,登录页面使用 https ,不明文传输密码差不多就可以了
vibrance
2015-09-26 17:00:39 +08:00
https 加专线加自制加密算法
Ouyangan
2015-09-26 17:01:19 +08:00
MeirLin
2015-09-26 17:35:00 +08:00
@giuem
@vibrance 然后就会出现撞库攻击。
abelyao
2015-09-26 17:40:19 +08:00
微信扫二维码登录
cloverstd
2015-09-26 17:42:01 +08:00
两步验证
loading
2015-09-26 18:46:43 +08:00
防爆破,我的就没实现这个…准备加。
MeirLin
2015-09-26 18:53:37 +08:00
@loading 验证码+表单不可重复提交(类似 Token )即可
lingo233
2015-09-26 19:09:10 +08:00
千万别自制加密算法
virusdefender
2015-09-26 19:24:07 +08:00
网页写入一段乱七八糟的 js ,提交的时候带上这个 js 的运行结果,然后与 session 中比较,可以防住不少低级的机器人。

https://virusdefender.net/index.php/archives/438/
tinyproxy
2015-09-26 20:14:44 +08:00
oauth ,两步验证,客户端证书
bdbai
2015-09-26 21:13:43 +08:00
@virusdefender 对于登录系统,万能机器人应该不多吧?
WordPress 博客也经常有机器人评论,随便搞点 trick 就行了。
Ryans
2015-09-26 21:22:54 +08:00
- https
- 如果 http ,请将用户名密码加密后传输,避免网络嗅探
- 多次输入密码错误出现验证码逻辑
- 账号 密码 的后台处理注意避免 SQL 注入漏洞使得万能密码可以绕过
- 找回密码逻辑
jugelizi
2015-09-26 22:00:21 +08:00
验证码 多次错误输入要有
密码要 JS 非对称加密服务器解密
不上 https 谈安全都是耍流氓
tuoxie007
2015-09-27 12:00:40 +08:00
最偷懒的做法,用第三方 oauth 登录,自己网站每次给分配一个 token ,定时过期。
ljdawn
2015-09-27 14:21:09 +08:00
两次 hash 先搞起来。
MeirLin
2015-09-27 17:13:38 +08:00
@ljdawn 哪个位置做 hash 呢?
ljdawn
2015-09-27 18:40:47 +08:00
@MeirLin js 来一发。 服务器短再来一发。。
MeirLin
2015-09-27 23:34:19 +08:00
@ljdawn 这样其实也无济于事, 攻击者可以在用户输入这一步进行诸如撞库类的攻击 自动写到表单进行 fuzz 提交就好 .. 所以要防御还需是多面的,目前看来正确使用验证码就可以防御,再加上表单提交的 token 基本不用担心撞库了。当然再加上服务器风控能做到发现大量发包提交就封 ip 也是有效的 但是 ip 的获取不能用 XFF ,不然一样可以伪造来绕过,其实撞库就是识别机器行为的博弈,只要机器无法做到就是防御了 当然最重要的是把所有登陆接口都做到防御 .. 挖过阿里撞库的经验
ljdawn
2015-09-28 08:45:02 +08:00
@MeirLin 一般网站的的登录都不会做到那么安全吧? 正确使用验证码? 如果验证码难度大,也增加了用户的登录难度阿。

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

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

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

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

© 2021 V2EX