我看到了一个安全问题/要求,即网站登录返回的无效密码错误消息与不存在的用户相同。这个想法是,它不可能通过扫描错误消息来发现有效的用户名。
如果可以自行注册,这有什么不同吗?您不能允许两次使用相同的用户名进行注册,因此攻击者可以尝试使用用户名进行注册,直到找到有效的用户名。
谢谢
我看到了一个安全问题/要求,即网站登录返回的无效密码错误消息与不存在的用户相同。这个想法是,它不可能通过扫描错误消息来发现有效的用户名。
如果可以自行注册,这有什么不同吗?您不能允许两次使用相同的用户名进行注册,因此攻击者可以尝试使用用户名进行注册,直到找到有效的用户名。
谢谢
如果至少有一种方法可以发现站点上可用的用户名,则意味着您可以尝试对这些特定帐户进行暴力破解/字典攻击/社交工程。在您描述的情况下,尝试在登录页面上隐藏错误原因不会产生任何明显的安全差异,因为否则发现真正的原因是微不足道的。
根据对您来说更重要的事情,您可以使您的登录过程对用户(和攻击者)更加友好,或者尝试保护您的注册(或任何其他)过程,这可能会揭示您的系统上存在哪些帐户。
在防御与典型 Web 应用程序的身份验证过程相关的此类情况时,您通常应考虑以下路线:
不,您在注册过程中别无选择,因为用户名必须是唯一的。但是,为了减轻您描述的攻击,您的系统应该在尝试之间强制延迟。例如,人类可能不会注意到 15 秒的延迟(因为选择新用户名需要更长的时间),但攻击者被限制为每分钟 4 次猜测。
在相关的说明中,有一个关于网站的都市传说,要求其使用具有唯一的密码和唯一的用户名。不用说,这并没有增强安全性。:-)
除了 Yoav 已经提到的非常好的几点:IMO 在注册期间完全防止信息收集的唯一方法是使用电子邮件地址作为用户名。通过这种方式,您可以向用于注册的地址发送电子邮件,而无需直接在网站上提供任何反馈。电子邮件的内容可能如下所示:
这样,只有电子邮件地址的所有者才能检查该地址的帐户是否已经创建。
正如 Yoav 所提到的,密码重置功能大部分时间都没有针对信息收集进行强化。我们刚刚分析了流行的云存储提供商的安全性,它们都至少可以通过密码重置功能收集信息。
是的,它确实有所作为。我可以扫描站点测试名称,直到找到一个有效的名称,然后用蛮力密码尝试敲击它。不知道有效的用户名意味着我必须猜测任何用户名都可能是有效的,这增加了我的不确定性并增加了测试用例的数量。
如果我知道我想暴力破解哪个帐户,那么不,消息没有区别并不重要。