在应用程序被杀死时删除钥匙串

时间:2015-04-20 08:57:22

标签: ios objective-c iphone ios7 keychain

我使用iOS7的钥匙串作为目标,我使用属性:kSecAttrAccessibleWhenUnlockedThisDeviceOnly

它工作得很好,在设备锁定10秒后,无法访问钥匙串变量。

我现在想要的是在应用程序被杀之前删除钥匙串。仅在应用程序在进入后台或系统释放应用程序之前被杀死时才会调用applicationWillTerminate。如果应用程序在被用户杀死之前处于背景中1分钟,我就无法找到如何清除钥匙串。

有没有办法删除钥匙串,或者在后台几分钟后用户杀死应用程序时调用了一个函数?

1 个答案:

答案 0 :(得分:2)

  

有没有办法删除钥匙串...

NO。在iOS上,只有一个钥匙串及其共享资源。

如果有兴趣,请从数据安全的角度阅读一些内容。自iOS 4/5天以来没有太大变化。我认为最有趣的新事物是iOS 7的NSSecureCoding Protocol(或者它是6?)和指纹认证。

  

或者在后台几分钟后杀死应用程序时调用一个函数

是和否。尽管有文献说明,但-applicationWillTerminate并未发送。相反,您知道在SIGKILL到达时您正在终止。你不能陷阱。但是你可以快速擦拭并从sighandler返回,但是(我从未尝试过,所以我不知道)。

数据敏感性保证时使用的策略是在代表收到-applicationWillResignActive时开始擦除数据。或者-applicationWillResignActive到达时启动计时器,但如果-applicationWillEnterForeground到达则取消计时器。如果时间过去,则开始擦拭。但两者都可能造成糟糕的用户体验。