2013-05-16 91 views
0

我有一个应用程序,其中有一个登录屏幕。我想在我的应用程序中添加一个限制一次登录尝试次数的功能。例如,如果用户尝试使用错误的user name和/或password进行5次以上的登录,则会弹出一条消息,表示您在接下来的60秒内无法登录。如果他在60秒内尝试,那么他应该无法登录。 60秒后,他应该能够使用正确的密码。限制登录尝试次数

+0

到目前为止你有什么?有没有一个服务器应该拒绝这些登录?你是否限制了尝试的次数,并且需要一种让用户稍后再次登录的方法? – thegrinner

回答

0

应该像创建一个实例变量int一样简单,并在每次失败登录后增加它,如果它命中5阻止登录尝试并同时触发NSTimer在60秒后擦除计数为0。

0

保存上一次尝试失败并尝试计数的默认值。

+0

是啊!我也有人建议使用NSUserDefaults,但我不知道如何实现它。所以,你可以借助一个例子让我看看。提前致谢! – Shikhar

+1

网上有一百万个教程和信息帖子,因此 - 这里是一个:http://iphonedevsdk.com/forum/iphone-sdk-tutorials/106311-tutorial-1-how-to-use-nsuserdefault.html –

0

您可以使用NSTimer强制执行时间限制。 在简单情况下,每次登录尝试失败时都会增加计数器。 第6次尝试将标志设置为NO,并启动计时器。 标志为NO时的任何进一步尝试均被拒绝。 定时器启动时,启动标志为YES,用户可以重试。

0

只是作为一个概念:

start a session for the login process if there is none; 
setting up the timer in that session (startime) if not already set 

loop by post to self: 

    check login; 

    on unsuccessfull login: 

     counting unsuccessfull logins; 
     if timer/counter are hit, instead of presenting the login fields, 
     show an error message; 
     if time of no login is reached, show login fields again, reset counter; 
     return; 

    on successfull login: 

     stop and drop the current session (to get rid of the timer stuff); 
     start the real session; 
     forward to application screen; 

但是: 这不会阻止任何人蛮力迫使你的应用程序,因为这一切都取决于一个会话cookie。通常这些bf攻击不会返回任何cookie,因此他们总是会首次尝试启动新会话。很大的努力,没有影响。依靠IP地址也无济于事,如果你受到bot网络的攻击,你会从每秒100个IP地址获得100个请求。

我会建议有什么像登录窗口/屏幕

0

一个CSRF令牌如果登录来自一个服务,这是最好的有处理它。你放入NSUserDefaults的任何东西都可以被读取并可能被修改。