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

admin 2023年2月3日10:50:44评论22 views字数 1053阅读3分30秒阅读模式

点击上方“萝卜大杂烩”,选择“星标公众号

超级无敌干货,第一时间送达!!!


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



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

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

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

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

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

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

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

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

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

3、使用双因素验证。即使爆破出用户名密码,还需要一个动态密码才能登录,具体实现可以参考前文什么是双因素验证 2FA,如何用 Python 实现?

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

号外

寻找上次送书活动的幸运中奖者!

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

由于本次送书活动,是兑换码的形式,所以请以上中奖者尽快联系我,领取书籍兑换码,过期不候!

参考资料

[1]

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

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

人生苦短,我用python
神秘礼包获取方式
点击下方公众号回复:1024

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

推荐阅读  点击标题可跳转

原文始发于微信公众号(萝卜大杂烩):为什么说“用户名或密码错误”是反人类的设计?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月3日10:50:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   为什么说用户名或密码错误是反人类的设计?https://cn-sec.com/archives/1534773.html

发表评论

匿名网友 填写信息