Asp.net mvc 在ASP.NET MVC 3中强制执行最大登录尝试次数

Asp.net mvc 在ASP.NET MVC 3中强制执行最大登录尝试次数,asp.net-mvc,asp.net-mvc-3,security,Asp.net Mvc,Asp.net Mvc 3,Security,我希望在用户登录时实现最大登录尝试次数,以防止对登录的自动暴力攻击 我可以想出几种不同的方法来解决这个问题,但它们似乎都留下了很大的安全漏洞 我有什么方法/选项来进行此操作?我显然不能使用隐藏字段,也不能使用会话,因为没有。协议是什么,或者是实现这一点的最佳实践方法 在我执行密码重置或临时停用帐户之前,我会尝试10次 注意-我正在研究存储登录数量的方法,如何区分登录尝试等我认为一般模式是在服务器上跟踪失败的登录尝试,而不是在客户端,当服务器记录了某个特定帐户的X个失败次数时,该帐户被锁定。然后,

我希望在用户登录时实现最大登录尝试次数,以防止对登录的自动暴力攻击

我可以想出几种不同的方法来解决这个问题,但它们似乎都留下了很大的安全漏洞

我有什么方法/选项来进行此操作?我显然不能使用隐藏字段,也不能使用会话,因为没有。协议是什么,或者是实现这一点的最佳实践方法

在我执行密码重置或临时停用帐户之前,我会尝试10次


注意-我正在研究存储登录数量的方法,如何区分登录尝试等

我认为一般模式是在服务器上跟踪失败的登录尝试,而不是在客户端,当服务器记录了某个特定帐户的X个失败次数时,该帐户被锁定。然后,用户需要通过先前验证的联系机制(电子邮件、电话号码、质询问题等)重置其帐户。

如果您想阻止用户尝试多次登录和密码,则需要跟踪ip以及失败登录尝试的次数。ips将存储在与经过身份验证的用户不同的表中

如果同一用户ip有10个无效登录,那么即使他们更改用户名和密码组合,他们输入的登录也不会起作用

当然,他们可以随时更改那里的ip,但是如果您不向他们显示他们已被跟踪,并保持表单正常,结果不变,他们将继续尝试,但不会实际验证任何内容。一切都会像普通用户看到的那样返回无效凭据。如果您希望他们停止攻击您的服务器,您可以设置IIS来阻止他们,但这将导致他们只切换IP。最终,这张名单将被用完,他们将去其他地方


您还可以在尝试3次后向用户发送电子邮件,通知他们发生了无效登录,如果不是这样,请告诉他们执行一些操作。我知道像LogMeIn这样的网站会这样做。

谢谢你的回答,我对我的问题进行了编辑,使之更具体一些,以满足我的需求。这将是您的具体实现。无论您以何种方式表示您的用户集合(数据库、映射等),您都希望增加一个不成功的登录计数器,当它到达X时,您将在您的用户记录上设置一个标志。您可以进行简短的讨论,但我不会为此使用视图状态。你对这样的东西感兴趣吗?我正在研究存储登录金额的方法——将其存储在服务器数据库中用户帐户记录的字段中。我如何区分登录尝试——增加前面提到的字段,如果计数太高,则锁定帐户。如果你只是想阻止自动攻击,使用验证码。不,你没有遗漏任何东西,这是一个基本问题。我知道如何增加,但我并没有真正把它看作是用户帐户上的一个字段。这有什么缺点吗?一个可能有多个用户来自同一个IP地址,所以我不确定这是否是最好的策略。