iOS中kSecAttrIsInvisible的相关性

问题描述 投票:1回答:2

Keychain项目属性键kSecAttrIsInvisible描述为:

一个键,其值为布尔值,表示项目的可见性。

自iOS 2.0以来,这已在iOS SDK中提供。

我假设这可能会隐藏钥匙串项目出现在macOS系统上,用户可以通过Keychain Access应用程序查看Keychain项目。

我的问题是,如果有的话,在iOS设备上启用此属性键的作用是什么?

ios keychain
2个回答
1
投票

我刚刚在Apple dev论坛帖子上发布了这个后续内容:

无论如何要小心:

我最近添加了这个属性来隐藏我的iOS应用程序中的一些项目,当iCloud钥匙串处于活动状态并且可以在Mac上看到时,也因为我们的应用程序的MacOS版本现在已经准备好了。

我们面临着一个严峻的形势,即由于这种模糊和无证的行为,iOS用户无法将他们的购买存储在钥匙串中:

  • 如果您设置了一个字典来删除和重写KC中的项目,添加kSecAttrIsInvisible属性,那么如果前一次写入没有不可见属性,则删除将失败。错误是errSecItemNotFound。由于该项目未被删除,因此无法再次存储。
  • 相反,可以使用包括或不包括属性的查询字典来删除存储有不可见属性的项目。

因此,要正确迁移到使用此属性,应该:

  1. 使用不带kSecAttrIsInvisible属性的查询删除项目。
  2. 如果删除失败,请使用该属性重做删除。我们没有看到这种情况,但应该在代码中进行规划。
  3. 然后使用属性编写项目。

将来删除可以使用该属性成功,但在我们测试的任何情况下,前面的步骤只能尝试删除一次。


0
投票

我在Apple Developer forums上收到了对此的回复:

我假设这可能会隐藏钥匙串项目出现在macOS系统上,用户可以通过Keychain Access应用程序查看Keychain项目。

正确。

我的问题是,如果有的话,在iOS设备上启用此属性键的作用是什么?

不多。鉴于iOS没有通用的方式来查看钥匙串项目,我能想到的唯一特定效果与iCloud Keychain有关。如果该项目通过iCloud Keychain同步到Mac,您可能希望在那里隐藏它​​。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.