首页 文章

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

提问于
浏览
1

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

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

我现在想要的是在应用程序被杀之前删除钥匙串 . 只有在进入后台或系统释放应用程序之前应用程序被杀死时才会调用 applicationWillTerminate . 如果应用程序在被用户杀死之前在后台持续1分钟,我找不到如何清除钥匙串 .

是否有任何方法可以删除钥匙串或在应用程序在后台运行几分钟后被用户杀死时调用一个函数?

1 回答

  • 2

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

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

    如果有兴趣,这里有一些从数据安全的角度来看 . 自iOS 4/5天以来没有太大变化 . 我认为最有趣的新东西是iOS 7的NSSecureCoding Protocol(或者它是6?)和指纹认证 .

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

    是的,不是 . 尽管文献说的是,但没有发送 -applicationWillTerminate . 相反,你知道当 SIGKILL 到达时你正在终止 . 你不能陷阱 . 但是你可能能够执行快速擦除并从 sighandler 返回(我知道) .

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

相关问题