如何安全检查用户名是否已被使用?

问题描述:

我有一个表单,有人可以创建一个新用户。我想添加一些AJAX来检查用户名是否被采用,只要输入字段失去焦点。 我不确定如何去解决这个问题,因为这可能会导致暴力攻击,因为您可以检查任何用户名并查看它是否存在。 有什么建议吗?如何安全检查用户名是否已被使用?

为什么不

  1. 油门尝试一个新的用户可以使数字(例如只允许“N”在一分钟内)
  2. 提供一个机制,建议根据用户的输入提供用户名,从而减少用户通常的有效尝试次数

我从来没有这样做过,所以只是一个想法。生成一些与表单一起传输的唯一ID(例如uuid)。当你检查用户名包括(并检查)这个唯一的ID。当然,这需要一些服务器端的参与,但是至少在不渲染表单的情况下,您将无法直接调用该函数。

注:为了增强安全性,您将需要更新的形式独特的ID每次用户检查的值。

不会提示时,输入字段失去焦点,您可以等待提交表单检查后,直到。如果用户名已被占用,一个可靠的解决方案是建议替代用户名。

,如果你是一个论坛,用户名是不是私人的。只需使用服务器逻辑来限制每分钟的通话次数。如果你是一家银行,不同的故事;但在这种情况下,您可以将用户名分配给银行账户。

也许是最好的选择是限制,在服务器端脚本,尝试允许用户做出的数目(基于任一会话,或IP)来合理极限(即10)30内分钟时间段。

另一种选择是把一个验证码页面上,确保用户是人,而不是一个暴力破解程序。