2

我正在设计一个基本网站,其访问受到经典登录和密码系统的限制。

当用户输入不存在的登录名以及为现有帐户输入无效密码时,我无法决定是否应该显示不同的消息。

我的第一个直觉是不要显示不同的消息,因为这会给潜在的攻击者提示错误的地方,但这样做有时会使用户更难理解他的错误(也许他只是输入错误的帐户登录名和适当的错误信息会更好)。另一方面,我经常听说帐户登录不是秘密密码显然是),因此提供有关它的信息不应降低安全级别。

你们对此有什么好的做法/理由吗?

谢谢。

4

4 回答 4

4

不要区分这些 - 这是可以被恶意方使用的信息。

如果他们知道用户名是正确的,那么他们已经掌握了您泄露的宝贵信息。

为什么登录失败对您的用户来说是一个小小的不便,毕竟他们仍然必须输入用户名和密码。

于 2012-05-20T18:56:20.447 回答
0

我认为没有任何具体理由不告诉用户出了什么问题。这个问题之前被问过,你可以在这里看到我的回答(但请原谅我的英语不好):https ://stackoverflow.com/a/8612838/455006

但重点是这些:系统应该尽可能地使暴力破解,即使攻击者知道一个用户名,你应该或多或少地指望“他们”知道至少一个用户名这一事实,因为那里有许多方法可以以相当准确的方式猜测或计算那些。依靠不知道用户名的攻击者由于晦涩难懂而接近安全,而且如果你总是指望攻击者知道用户名,那么你的安全方案和计划很可能会好得多。

请注意,在某些情况下,这些参数并不那么相关:这些情况下,其中的用户名本身可用于恶意活动(即,用户名是可用于发送垃圾邮件的电子邮件地址,或者某些帐号,可用于网络钓鱼攻击等)。您可能会争辩说,网站上的内容可能非常重要,即使是隐蔽保护也很重要,但在这种情况下,我坚信您应该使用 2 因素身份验证、一次性密码或类似的东西。有许多开源和/或免费的解决方案。

于 2012-05-21T15:44:49.490 回答
0

通常的做法是在 borh 情况下表现相同,以免帮助攻击者找出哪些用户名是有效的。如果他已经死了,没有造成任何伤害,如果他没有,不要让他更容易。在这种情况下,合法用户的不便被认为不如针对恶意第三方的防御重要。

于 2012-05-20T18:59:38.933 回答
0

“消息”和“错误代码”之间是有区别的。

当用户尝试登录失败时,最好在内部区分错误的用户名和错误的密码(可能用于记录目的)。

但是,在这两种情况下显示给用户的消息应该是相同的——例如“您提供了不正确的用户名/密码组合”。如果您在每种情况下使用不同的消息,您实际上是在提供“此用户名存在吗?” 表单,它可以帮助潜在的攻击者获得对用户帐户的访问权限。

使用相同的消息确实可能会给用户带来一点不便,但最终安全性应该是更高的优先级。无论如何,现在或多或少的常见做法是为错误的用户名和错误的密码显示相同的消息。

于 2012-05-21T11:19:18.470 回答