每当我们输入错误的密码时,大多数网站都会说“用户名或密码错误”。 他们为什么不说“你的密码错了”?
答案 0 :(得分:7)
因此,如果有人试图猜测有效的用户名和密码,则不会告诉他们“是的,您设法猜出了有效的用户名”。如果用户名以其他方式可见,则对于任何给定的站点,这可能是也可能不是有用的。
答案 1 :(得分:4)
请忽略说“您的密码错误”的安全问题。 首先,我们可以检查是否可以说“您的密码错误”。
我在我们的大学小组中发布了这个问题,我觉得小组的一个答案值得在这里提出。
只有网站可以说,网站才能说“您的密码错误” 确保您正确输入了用户名。该网站如何知道 你正确输入了你的用户名?没有办法知道这一点。
身份验证失败可能以三种方式发生:
网站按以下方式处理。
<强>一个即可。如果用户名不在数据库中,则网站不能说“您的用户名错误”。因为网站不知道您输入的密码是否是您的正确密码。因此网站可以说“用户名或密码错误”。仅
<强> B'/ strong>即可。如果用户名在数据库中,则网站不能说“您的密码错误”。 因为网站不知道您输入的用户名是否是您正确的用户名。所以网站可以说“用户名或密码错误”。仅
答案 2 :(得分:1)
除了安全性之外,它也可能是一种“懒惰”的设计选择。如果用户名错误或密码错误,为什么还要单独检查,当你只需编写一个查询并输出是否成功时,最终用户会知道自己是否有错误。
答案 3 :(得分:0)
它也可以确保懒惰或代码清洁。简单的例子如下。
If( password != submittedpw || username != submittedusername)
{
Print 'username and or password is wrong';
}
上述内容比
快得多if (password != submittedpw)
{
Print 'password is wrong';
}
elseif (username != submittedusername)
{
print 'username is wrong';
}