跟踪失败的登录尝试

这个问题基本上是语言不可知的,但在我的情况下,我使用PHP为任何想知道的人。

我想跟踪用户失败的登录尝试次数,以便在X失败尝试后显示验证码。 唯一的办法就是防止暴力攻击。 它不一定是一个非常安全的方式,只是令人讨厌,无法推迟那些蛮横的人。

我正在考虑创建会话变量$_SESSION['failedLoginAttempts']并在每次检测到失败的登录尝试时增加它。 攻击者仍然可以替换浏览器或者删除他的cookies来继续前进,但是这会使他(即他用来执行暴力的任何工具)每次尝试都浪费几秒钟的时间,因此尝试的次数会很高降低。

从二次攻击到每分钟两次攻击会是理想的,那么攻击可以忽略不计。

这种方法是正确的还是我错过了什么? 另外,这些情况下的最佳做法是什么?


您最好将其记录在附加到用户标识的数据库中。 这是因为一个坚定的攻击者不会使用网络浏览器进行暴力破解; 用大多数任何语言构建脚本都非常简单,它会重复登录尝试并完全忽略cookie,或者在每次尝试后重置cookie。


另外请记住,如果您在数据库中存储了加密的密码。

PHP或MySQL应该接受用户输入并加密。

例如(不是真实且不安全的代码)

$query = "SELECT * FROM user WHERE user = " . $_POST['username'] . " AND password " . sha512($_POST['password']);

如果您的服务器在发送请求时可能需要多达8 Mb的数据,该怎么办? 该攻击者可以将1 Mb作为密码发布,试图对DDOS进行加密以保持服务器的CPU处于高负载状态。

链接地址: http://www.djcxy.com/p/21617.html

上一篇: Keeping track of failed login attempts

下一篇: Preventing dictionary attacks on a web application