在许多应用程序中,当您在用户名或密码中出错时,您会收到一个非特定错误,指出输入的用户名不存在或该用户名的密码不正确。
我(天真地)希望应用程序指定发生了两个错误中的一个。有没有理由不区分它们?我想这会让攻击者更难猜出一个正确的用户名/密码组合,但有没有任何文献,研究或类似的东西支持这个假设?
答案 0 :(得分:11)
原因是安全性:它会根据失败的尝试阻止finding out which user names exist。
这应该与用户体验相平衡;如果您被告知 您的用户名或密码不正确,可能会被视为非常无益或烦人。
答案 1 :(得分:2)
是的,这正是为什么许多应用/网站没有指定登录的哪个部分是坏的。我曾经有同样的抱怨,但后来我读了一堆计算机安全书,包括 19 Deadly Sins of Software Security 。除了溢出和SQL注入之外,Michael Howard确实解释了为登录返回统一错误的原因。
HTH
答案 2 :(得分:1)
常识表明模糊信息更好,因为攻击者无法知道他们是否猜到了正确的用户名。
答案 3 :(得分:1)
这是攻击者需要跳过的额外箍。如果他对攻击应用程序进行冷攻,他就不会知道任何用户名或密码。为什么要给他一些额外的信息来告诉他他找到了用户名?保留信息最好。
如果攻击者只想确认某个用户名存在,该怎么办?比如,作为一个例子,政治家的名字作为迷信网站的用户名。用户名本身就是敏感信息,您不想确认哪些存在,哪些不存在。
答案 4 :(得分:1)
所有关于为攻击者提供尽可能少的信息。 有些网站在密码提醒方面更进一步。当您输入您的电子邮件地址以接收新密码或密码重置链接时,他们不会告诉您您的电子邮件地址是否已在数据库中注册,但会给您一条消息:“如果您输入的电子邮件地址位于我们的数据库中您将收到一条消息......“这可以防止攻击者找出受害者使用的电子邮件地址,并且还可以通知受害者有人试图侵入她的帐户。