钥匙串项目的默认 kSecAttrAccessible 值?

Posted

技术标签:

【中文标题】钥匙串项目的默认 kSecAttrAccessible 值?【英文标题】:Default kSecAttrAccessible value for keychain items? 【发布时间】:2011-03-22 14:42:04 【问题描述】:

有谁知道 ios 钥匙串项目的kSecAttrAccessible 属性的默认值(请参阅reference)?我刚刚升级一个应用程序以使用更严格的安全性,我很好奇我的旧钥匙串项目(没有指定 kSecAttrAccessible 键值对)的可访问性。

【问题讨论】:

【参考方案1】:

我刚刚在 iOS 5.1 和 6.0 上对此进行了测试,现在默认为 kSecAttrAccessibleWhenUnlocked

但是,我认为设置明确的kSecAttrAccessible 总是更好,而不是依靠默认值来为您提供足够的安全性。

【讨论】:

【参考方案2】:

我已在 IOS 8.1 上对此进行了测试,默认值为 kSecAttrAccessibleWhenUnlocked

【讨论】:

【参考方案3】:

更新:在几年前,现在默认是kSecAttrAccessibleWhenUnlocked

根据去年 WWDC 的 Session 209(保护应用程序数据)视频,现有数据默认为 kSecAttrAccessibleAlways(因此您需要根据需要更新可访问性类)。

【讨论】:

这可能在 iOS6 中有所改变,我必须明确将其设置为 kSecAttrAccessibleAlways 才能获得此行为 我同意 Erik 的回答,因为最好明确说明您想要什么。 kSecAttrAccessibleWhenUnlocked 现在是默认设置,而且可能是不久前的设置。 是的,我认为它在几年前发生了变化。不确定具体年份。我会编辑!【参考方案4】:

The documentation for kSecAttrAccessibleWhenUnlocked 说:

这是未明确添加的钥匙串项目的默认值 设置可访问性常量。

【讨论】:

以上是关于钥匙串项目的默认 kSecAttrAccessible 值?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以访问在共享同一应用组的应用启用钥匙串共享之前保存的钥匙串项目吗?

是否可以更新钥匙串项目的 kSecAttrAccessible 值?

IOS 生产发布错误:- 错误 - 证书与配置文件不匹配:默认钥匙串没有身份匹配

未设置访问组时共享的钥匙串项目

解锁 Osx 本地项目钥匙串

用于启动 Tomcat 和 Jenkins 的非特权用户的 iOS 默认钥匙串