在我们的应用程序中,我们希望在指定次数的登录失败后阻止用户。我们使用自定义表来存储用户。
在我们的登录页面中,它包含三个字段,如用户名,密码和id字段。 id字段不是唯一的。
那么我如何阻止用户,如果我将使用用户名来计算失败的尝试,那么另一个人可以通过猜测用户名并错误地输入来轻松阻止该帐户。
那么获取失败登录的最佳方法是什么?阻止用户?
答案 0 :(得分:1)
我会在您的用户表中使用FailedAttemptCount列,并在每次用户尝试无效时将其递增
答案 1 :(得分:1)
您是否考虑过使用ASP.NET Membership?这已经处理了你提到的情况。可以将其配置为在多次尝试失败后锁定帐户。
在会员资格等情况下(我假设您也存储密码)我建议使用已经创建的系统,而不是自己编辑。
答案 2 :(得分:1)
如果您使用的是Asp.NET会员提供商,则可以将提供商配置为进行登录尝试,maxInvalidPasswordAttempts="3"
{任何尝试号码}。有关详情,请参阅Login Attempts
答案 3 :(得分:1)
在失败的登录尝试中,我会使用存储在应用程序状态中的字典,其IP为key
,并使用一个简单的整数来将attemts计为value
然后在每次登录失败时,如果用户的IP存在于字典中,请增加它。如果尝试计数器的数量是>
而不是登录数量,则中止会话。
当然,您还需要实现一个时间间隔,以及一种在成功登录时重置计数器的方法。
但这应该很容易。
答案 4 :(得分:0)
您可以向用户表中添加几列以跟踪登录失败的次数。然后,您可以在每次有人输入错误的凭据时更新失败的登录次数,如果他们输入了正确的凭据,您可以将其设置回0。
如果要指定例如半小时的超时,您还可以为上次登录尝试添加日期时间字段。
答案 5 :(得分:0)
如果相同的SessionID和相同的用户名登录三个
,也许SessionID很有用当登录失败时,具有sessionID的用户被阻止....