在我的注册表单中,我对输入焦点的电子邮件和用户名进行了ajax db查找。 。这是个坏主意吗?为什么?如果用户查找>我还计划附加锁定。允许查找。
答案 0 :(得分:2)
不,这不是一个坏主意。相反,与您必须提交整个表单只是为了告诉用户已经收到电子邮件相比,它改善了用户体验并减少了带宽使用。所有主要网站都这样做。以Google的注册表格为例:https://accounts.google.com/SignUp?continue=https%3A%2F%2Fwww.google.com%2F&hl=en
答案 1 :(得分:0)
这可能会导致User Enumeration漏洞 - 即攻击者可以通过暴力或通过测试另一个用户名和电子邮件地址列表轻松收集系统中已知的用户名和电子邮件地址列表,以确定它们是否存在是活跃用户。
您提到添加锁定,但您将根据什么标准确定尝试的用户查找次数?通过cookie或会话进行分组将是不安全的,因为攻击者可以简单地清除他们的cookie或开始新的会话。 IP将是一种更好的方式(例如,每30分钟每个唯一IP允许10次查找),但是由于攻击者可以使用分布式攻击,因此可以采用这种方法。
如果这是您系统的问题,请查看我的answer here以获得更安全的方式。这涉及用户仅在表格上输入他们的电子邮件地址,该表格将通过发送到该地址的链接继续注册过程。如果您这是第一步,那么您将知道此用户在下一步尝试了哪些用户名,因为这些查找将与输入的电子邮件地址相关联,您可以通过唯一的方式限制用户名查找的数量电子邮件。这将使攻击者难以枚举用户名,几乎不可能枚举电子邮件地址。