预表单提交数据库查询是否不好



在我的注册表格中,我有一个ajax数据库查找输入焦点时的电子邮件和用户名。这是个坏主意吗?为什么?如果用户查找>允许查找,我还计划附加一个锁定。

不,这不是个坏主意。相反,与你必须提交整个表格来告诉用户电子邮件已经被接收相比,它改善了用户体验,减少了带宽使用。所有主要网站都这样做。以谷歌的注册表格为例:https://accounts.google.com/SignUp?continue=https%3A%2F%2Fwww.google.com%2F&hl=en-

这可能会导致用户枚举漏洞,即攻击者可以通过暴力或测试另一个用户名和电子邮件地址列表来确定他们是否是活动用户,从而轻松地从您的系统中获取已知的用户名和电子邮件地址列表。

您提到添加锁定,但您将根据什么标准来确定尝试的用户查找次数?按cookie或会话分组是不安全的,因为攻击者可以简单地清除他们的cookie或启动新会话。IP是一种更好的方法(例如,每30分钟每个唯一IP允许10次查找),但由于攻击者可以使用分布式攻击,他们可以使用这种方法。

如果这是您的系统的问题,请参阅我的答案,以获得更安全的方法。这涉及到用户只在表格上输入他们的电子邮件地址,该表格将通过发送到此地址的链接继续注册过程。如果您在第一步中这样做,那么您将知道该用户在下一步中尝试了哪些用户名,因为这些查找将与输入的电子邮件地址相关联,并且您可以通过唯一电子邮件限制用户名查找的次数。这将使攻击者难以枚举用户名,并且几乎不可能枚举电子邮件地址。

最新更新