如何安全地检查是否已经使用了用户名?

时间:2010-05-29 14:34:26

标签: ajax security user-registration

我有一个表单,有人可以创建新用户。一旦输入字段失去焦点,我想添加一些AJAX来检查是否采用了用户名。 我不确定如何解决这个问题,因为这可能会给暴力攻击铺平道路,因为你可以查看任何用户名并查看它是否存在。 有什么建议吗?

5 个答案:

答案 0 :(得分:3)

可能最好的选择是在服务器端脚本中限制允许用户在30分钟内尝试(基于会话或IP)到合理限制(即10)的尝试次数时间段。

另一种选择是在页面上放置验证码,以确保用户是人,而不是强制执行程序。

答案 1 :(得分:2)

为什么不

  1. 限制新用户可以尝试的次数(例如,一分钟内只允许'n')
  2. 提供一种机制,根据用户的输入建议可用的用户名,从而减少用户通常会进行的有效尝试次数

答案 2 :(得分:2)

您可以等到提交表单进行检查后,而不是在输入字段失去焦点时提示。如果已经使用了用户名,则可靠的解决方案是建议其他用户名。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

注意:为了提高安全性,每次用户检查值时都需要更新表单唯一ID。