iOS错误密码超时

时间:2016-01-22 01:43:52

标签: ios swift security

在我正在处理的应用程序中,我让用户使用密码作为其TouchID的备份。显然,出于安全原因,这个密码应该具有某种形式的超时'类似于iPhone锁屏。

实现这一目标的最佳方法是什么?

我最初的想法是保存用户上次不正确的尝试,并检查它是否超过当前日期之前的x分钟数。

我认为这可以在实践中发挥作用,但是将其与系统时钟联系起来绝对不是最安全的方式。

对此事的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我已在多个应用中实现了某种形式。我通常做的是使用一个计时器,该计时器在用户与应用程序交互时开始(如果存在,则取消之前的计时器)。当时间用完时,则运行超时方法。
像这样:

- (void)pressedButton:(UIButton *)button {
  // record button press

  [self scheduleInteractionTimer];
}

- (void)scheduleInteractionTimer {
  if (_timeoutTimer) {
    [_timeoutTimer invalidate];
  }
  _timeoutTimer = [NSTimer timerWithTimeInterval:timeoutTime target:self selector:@selector(timeoutTripped) userInfo:nil repeats:NO];
  _timeoutTimer.tolerance = 5.0; // optional
  [[NSRunLoop mainRunLoop] addTimer:_timeoutTimer forMode:NSRunLoopCommonModes];
}

- (void)timeoutTripped {
  // whatever should be done for a timeout...
}

你绝对可以将-scheduleInteractionTimer绑定到错误的响应或其他任何你喜欢的内容。

编辑:我还建议在应用进入后台时解除密码视图。

干杯

安东尼