我有一个应用程序,其中有一个登录屏幕。我想在我的应用程序中添加一个限制一次最大登录尝试次数的功能。例如,如果用户尝试使用错误的user name
和/或password
登录超过5次,则会弹出一条消息,指出您在接下来的60秒内无法登录。如果他在60秒内尝试,那么他应该无法登录。 60秒后,他应该能够使用正确的密码进行操作。
答案 0 :(得分:0)
应该像创建实例变量int一样简单,并在每次登录失败后递增它,如果它命中5阻止登录尝试,同时触发NSTimer在60秒后将计数擦除为0。
答案 1 :(得分:0)
保存上次尝试失败并尝试计入默认值。
答案 2 :(得分:0)
您可以使用NSTimer来强制执行时间限制。 在一个简单的例子中,每次登录尝试失败时都会增加一个计数器。 在第6次尝试时,将标志设置为NO,然后启动计时器。 标志为“否”时的任何进一步尝试都将被拒绝。 当计时器触发时,它将标志启动为YES,用户可以重试。
答案 3 :(得分: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地址也没有帮助,如果你受到僵尸网络的攻击,你将每秒从各种IP获得100个请求。
我建议在登录窗口/屏幕中有一些喜欢 CSRF令牌
答案 4 :(得分:0)
如果您的登录来自服务,最好在那里处理。您放入NSUserDefaults的任何内容都可以被读取并可能被更改。