登录      注册 ,网站注册用户数1479
如果您手头宽裕,且愿意为鄙站的发展出一份力,请移步捐助本站
您的位置: 首页 > 转载 > 设计 > 为什么说“用户名或密码错误”是反人类的设计?

为什么说“用户名或密码错误”是反人类的设计?

2023年1月21日 来源:脚本之家

本文转载自微信公众号:Python七号(PythonSeven)

已获得原公众号授权转载

有很多网站和应用,当时注册只是为了一时的需求,后来想再进去查询时,忘记了注册时的用户名或密码,就拿自己印象中的用户名和密码试了下,结果提示“用户名或密码错误”。

作为用户,我想知道,到底是密码错误,还是用户名错误,请减少我的尝试次数。

作为网站和应用,提示“用户名或密码错误”,是为了防止黑客攻击,要知道,黑客是拥有很多已经攻破或泄漏的用户名的和密码的,如果提示密码错误,那黑客就可以使用密码字典[1]里的密码进行暴力破解,如果提示用户名错误,那黑客就会更换用户名进行攻击。

其实,即使网站和应用仅提示“用户名或密码错误”,作为用户,我们也是可以知道,到底是用户名错了,还是密码错了。通常,用户名在数据库里都是唯一的,只需要我们用这个用户名再次注册一下,如果提示用户名已存在,那就说明我们输入的用户名是正确的,否则就是错误的。

既然如此,这样提示用户“用户名或密码错误”是否很多余?

我觉得是的,与其如此,还不如大大方方的告诉用户到底是密码错误,还是用户名不存在,也好让用户节省尝试的时间。

那你可能问了,如何防止黑客攻击呢,有 3 种手段:

1、请求频率限制。我们对登录接口加上频率限制就可以了,比如正常用户一分钟内尝试的次数不会超过 5 次,那么超过 5 次的就让他 10 分钟后再试,或者狠一点的,10 分钟内超过 50 次的 ip 直接拉入黑名单,永久禁止访问。

2、强制使用强密码。让用户使用不低于 12 位的包含数字、字母(含大小写)、特殊字符组成的密码,即使暴力破解,也需要很长时间,让爆破者得不偿失。

3、使用双因素验证。即使爆破出用户名密码,还需要一个动态密码才能登录。

综上,我认为“用户名或密码错误”是一种反用户的设计,请不要在你的应用中这样做。

参考资料

[1] 密码字典: https://github.com/k8gege/PasswordDic

<END>

   

0/255

还没有评论,快来抢沙发吧!
为您推荐
趣网商城
Copyright © 2014-2024 森林的角落 , All Rights Reserved