提示“用户名或密码不正确”很糟糕

译者按: 好像真的有点道理!难住了用户,并拦不住黑客!

本文采用意译,版权归原作者所有

你也许听说过最佳安全策略是:登录的时候不要提示“密码不正确”,而是“用户名或密码不正确”。
在这里我想说这是一个混蛋策略,一点也没用。

来,我给你们看看 Strip 和 Github 的登录页:





为什么会有这样的设计呢?因为如果黑客知道用户名,他/她就可以专注于使用各种攻击方法比如(SQL 注入、暴力破解、网络诱骗等等)来获取密码。

我接下来告诉你这个策略为啥行不通。





完了,我的用户名被你们看到了,我的账户接下来很危险了!更不用说你可以直接去https://github.com/travisjeffery页面来判断 travisjeffery 是否是用户名。

所以黑客只需要去注册页面尝试使用用户名注册一下,就知道该用户名有没有被注册。为何在登录的时候还要使用模棱两可的提示语?只要最蠢的黑客遇到“用户名或密码不正确”这样的提示才会被难住。因此,事实上你并没有获得更高的安全等级,但却让你的客户使用变得麻烦很多。

Strip 将表单提交放在 reCAPTCHA 验证之后,来阻止简单的脚本攻击。不过,还是出过好几次问题(1, 2),而且貌似永远不会完美解决。就算 reCAPTCHA 可以完全防住脚本攻击,黑客还是可以通过注册来测出用户名,然后再发动攻击。

为了防止黑客去推测账户是否存在,最好的办法就是通过填入邮箱地址,并且不会提示是否有该注册邮箱的情况下将登陆链接发送到用户的邮箱。黑客想要破解这种方式的唯一方法就是除非他能够访问用户的邮箱。

我还是要说:提示“用户名或密码不正确”是一个混蛋策略!

Fundebug提供网页 JavaScript 错误监控,如果有频繁的登录尝试,Fundebug 也可以捕获到相关错误信息的喔!

关于Fundebug

Fundebug专注于JavaScript、微信小程序、支付宝小程序线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了80亿+错误事件。欢迎大家免费试用

您的用户遇到BUG了吗?

体验Demo 免费使用