他们为什么不说“你的密码错了”?

时间:2012-03-20 08:12:35

标签: authentication passwords username

每当我们输入错误的密码时,大多数网站都会说“用户名或密码错误”。  他们为什么不说“你的密码错了”?

4 个答案:

答案 0 :(得分:7)

因此,如果有人试图猜测有效的用户名和密码,则不会告诉他们“是的,您设法猜出了有效的用户名”。如果用户名以其他方式可见,则对于任何给定的站点,这可能是也可能不是有用的。

答案 1 :(得分:4)

请忽略说“您的密码错误”的安全问题。 首先,我们可以检查是否可以说“您的密码错误”。

我在我们的大学小组中发布了这个问题,我觉得小组的一个答案值得在这里提出。

  

只有网站可以说,网站才能说“您的密码错误”   确保您正确输入了用户名。该网站如何知道   你正确输入了你的用户名?没有办法知道这一点。

身份验证失败可能以三种方式发生:

  1. 您可以输入正确的用户名但密码错误。
  2. 您可以输入正确的密码但用户名不正确。
  3. 您可能输入错误的用户名和密码。
  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';
}