当应用被卸载时如何删除钥匙串数据?

12

我有一个问题。 我正在将一些关键信息保存在设备Keychain上,供我的应用程序使用,但是当我卸载该应用程序并重新安装它时,这些数据仍然被保存。如何在应用程序被卸载时删除这些信息? 如果无法实现这一点,如何检测应用程序在安装后首次加载而不保存信息到NSUserDefaults中?

非常感谢。


1
https://dev59.com/BG445IYBdhLWcg3wq8JY - Rok Jarc
2
为什么你不想使用NSUserDefaults来存储你的应用程序是否是第一次启动? - tilo
当应用程序从设备中删除时,您将无法执行任何操作,应用程序也不会收到有关该事件的通知。 - holex
理论上来说,钥匙串是足够安全的,对吧? - Paolpa
1
@Paolpa,你的问题不在于安全性,而是你最初的问题是想在应用程序被删除/卸载时删除信息;这是不可能的。 - holex
显示剩余2条评论
2个回答

5
这是一种解决方法,但可能会满足您的需求: 将键链中是否有数据的标志存储在NSUserDefaults中。 如果它是NO,则忽略键链。

3
不应该使用NSUserDefaults来存储像密码或证书这样的敏感数据。 - orkoden
1
@orkoden,有人说过在NSUserDefaults中存储密码吗?我没有。 - Cy-4AH
@ta.speot.is. 谢谢了。请问为什么是-1? - Cy-4AH
@ta.speot.is,你在https://dev59.com/BG445IYBdhLWcg3wq8JY中减去了答案吗?这是同样的答案,但更短。 - Cy-4AH
抱歉,我误读了你的回答。我无法撤回我的负评,因为我几个小时前就已经给你点了踩,但如果你对你的回答进行小修改,我可以给你点赞。 - ta.speot.is
我不同意将关键信息保存在UserDefaults中。 - Zhou Haibo

0

我不确定为什么你不想使用NSUserDefaults。它似乎非常适合这个目的。

如果不使用NSUserDefaults,你可以将一个文件写入到文档目录,并将该文件的存在作为标志。


我想我误解了你的问题。我假设整个时间你会使用钥匙串来存储安全值。

NSUserDefaults中使用一个标志来表示需要在第一次启动时删除钥匙串。


作为 Keychain 的真正替代品,可以使用 数据保护 权限。

1
NSUserDefault并不安全,将其存储在更安全的地方,如KeyChain中,这样做更有意义,因为NSUserDefault只是以纯文本形式存储。 - rckoenes
@rckoenes 我更新了我的回答。我认为你想要使用数据保护。 - Jeffery Thomas
谢谢Jeffery Thomas,非常好的替代方案! - Paolpa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接