ajax - AJAX 检查用户名功能的安全性

标签 ajax security

我们的注册表单上有使用 AJAX 调用来检查用户名是否可用的功能。

这很简单

  • 调用我们的服务
  • 根据数据库检查用户名
  • 如果找到用户名记录,则返回“taked”,否则返回“available”。

一旦用户停止输入几秒钟,我们就会执行对我们服务的调用。

然而,我们的问题是攻击者可以对我们的服务使用某种暴力手段并编译我们所有用户名的列表。

有人知道有什么好方法可以帮助防止这种“攻击”吗?

我唯一能想到的就是预先要求输入验证码,但这不会是一个良好的用户体验,并且可能会阻碍人们填写我们的表单。

如果有帮助的话,我们正在使用 ASP.NET MVC、C#、SQL Server。

任何帮助将不胜感激,谢谢!

最佳答案

我认为最好的方法是对其进行速率限制,要么只允许用户一定数量的请求,要么为每个请求添加 0.5-1 秒的等待时间。通过执行上述任一操作,攻击者将变得更难在合理的时间内枚举相当数量的用户名。

我认为保护您的应用程序的更好方法是将其视为每个人都已经拥有您的用户列表并从那里开始工作。假设攻击者了解您的所有用户,您将如何防范暴力攻击?通过限制密码尝试次数。通过每 10 分钟左右只允许尝试几次密码,您将极大地保护应用程序用户的安全。

我个人认为,所有不明显的密码(例如“password”和“qwerty”)都应该是安全的 - 例如,“soccerfan”应该是安全密码。为什么?因为你不会立即猜出“soccerfan”。在你的暴力破解者的字典中,它可能是第 100 位左右,当他们猜测尝试使用接近该金额的任何地方登录时,他们应该被禁止,并且应该通知用户。 (顺便说一句,我并不是建议人们应该使用这样的密码,越复杂越好)。

关于ajax - AJAX 检查用户名功能的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10553706/

相关文章:

security - LINQ to Entities 和 SQL 注入(inject)

SSL + 附加加密层

javascript - Stripe 安全问题

javascript - 对 Sinatra 应用程序的 Jquery Ajax 请求

java - 使用 ajax jquery Struts-1 设置 Action Class 属性

ajax - Django 。使用 Ajax 显示数据

javascript - 第二个 AJAX 基于第一个 AJAX 的结果

javascript - 如何获取数据表中的行索引?

security - 如何持久化 OAuth 2 刷新 token

security - delphi exe的内部密码安全吗?