iOS钥匙串中的项目能否在应用程序卸载和重新安装后生效?

And*_*son 33 keychain ios

我正在寻找有关iOS钥匙串项目的文档.我的具体问题是,如果钥匙串项在应用程序卸载和重新安装周期后仍然存在.它似乎从iOS 4(或者甚至iOS 3)那样工作,但是我找不到Apple的任何文档说明这实际上应该以这种方式工作.

我想弄清楚的是,如果我可以信任(不是"希望"或"猜测"),钥匙串中的项目将在应用程序卸载后继续存在.

编辑:我意识到Daij-Djan指出的问题有点不清楚.我正在寻找的是备份众所周知的行为的官方文档.

更新2017-04-04:请参阅下面的答案,iOS 10.3测试版中的行为更改.它在iOS 10.3中正常工作,但在将来的版本中可能会有所改变.

And*_*son 18

我在Apple开发者论坛上挖了一下,并且苹果开发者(eskimo1,又名Quinn)在2012-08-27声明这是当前的行为,但这是他知道没有/记录/行为,所以这可能会改变未来.他还说删除共享的钥匙串项目总是很棘手,这也是它尚未解决的原因之一.

所以我想这会让问题悬而未决:没有确定的答案.它没有记录,可以随时更改.依赖它可能会在将来引起问题.

更新2017-04-04:

iOS 10.3测试版中,卸载应用程序时会删除应用程序的钥匙串信息,但在最终的10.3版本中似乎已删除此行为.在Apple文档中建议将要更改,并且我们不应该依赖于在卸载应用程序后完整的钥匙串访问数据.另请参阅iOS 10.3 beta 3不会保留KeychainItem的数据.

  • @AndreasPaulsson:你说的没错.我错误地编写了测试并得到了假阴性.从iOS 11.0.3开始,删除应用程序后,钥匙串数据仍然存在.我删除了之前的评论,以免混淆任何人. (3认同)
  • 伟大的发现 - 只是FYI爱斯基摩人在2015年10月15日的论坛中重复了这一指导("确实.这种行为更多的是实施的人工制品而不是设计的功能[...]你真正需要的问题问是,如果这种行为发生变化,我的曝光是什么?" (2认同)

use*_*234 7

也许这就是你要找的东西.
Apple文档

注意:在iPhone上,Keychain权限取决于用于签署应用程序的配置文件.确保在不同版本的应用程序中始终使用相同的配置文件.

  • @ user523234我确认了这种行为,但我只是怀疑如果配置文件已过期并续订怎么办?任何人都能证实这一点吗? (5认同)
  • 对我来说,以下文字间接暗示了这一点."注意:在iPhone上,Keychain权利取决于用于签署应用程序的配置文件.确保在不同版本的应用程序中始终使用相同的配置文件." 这意味着,如果您删除旧版本的应用程序并使用更高版本安装.因此,只要开发人员使用相同的配置文件,稍后新安装的应用程序版本就可以访问相同的密钥链数据. (3认同)

Dai*_*jan 6

是他们会.

看到我的相关问题:

如何找出用户第一次购买应用程序/安装它时(可能没有UDID?)


照我看来:

'正式'这是因为钥匙串适用于多个应用程序......并且它"属于"操作系统:

Apple文档

钥匙串是一个加密容器,用于存放多个应用程序和安全服务的密码.

=> ergo钥匙串幸存了应用程序

钥匙串项可以在多个应用之间共享

  • 关于您在应用程序之间共享的附加功能:这是由访问组(keychain-access-groups)定义的,iOS可能会保留引用计数,以便删除未安装可访问它们的应用程序的钥匙串项目(类似于持久性UIPasteboard )。我同意可能没有删除它们,但是我找不到说明不能保证删除它们的文档。关闭,但没有雪茄:-)。 (2认同)
  • 5年后-所有内容均未更改-钥匙串在应用卸载后仍然有效 (2认同)