如何延迟/限制ASP.NET中的登录尝试?

Lor*_*zCK 9 asp.net security iis throttling

我正在尝试对我的ASP.NET Web项目执行一些非常简单的请求限制.目前我对针对DOS攻击的全局限制请求不感兴趣,但是想要人为地延迟对所有登录尝试的响应,只是为了使字典攻击更难做(或多或少像Jeff Atwood 这里概述的那样).

你会如何实现它?这样做的方式是 - 我想 - 简单地打电话

Thread.Sleep();
Run Code Online (Sandbox Code Playgroud)

在请求期间的某个地方.建议?:)

kem*_*002 2

我会将延迟放在服务器验证部分上,它不会尝试验证(自动返回为 false,并有一条消息说用户必须等待很多秒才能再次尝试)。直到过了好几秒才得到另一个答案。执行 thread.sleep 将阻止一个浏览器进行另一次尝试,但它不会阻止分布式攻击,即某人有多个程序尝试同时以用户身份登录。

另一种可能性是尝试之间的时间因尝试登录的次数而异。因此,第二次尝试时,他们等待一秒,第三次可能是 2 秒,第三次是 4 秒,依此类推。这样,合法用户就不必因为第一次错误输入密码而在两次登录尝试之间等待 15 秒。