1

目前,我们正在为我们公司开发跟踪应用程序。为了使这个应用程序更安全,我们想在首次启动时询问用户一个安全码。此安全代码很可能是客户编号。

用户使用他的跟踪和跟踪代码向服务器发送请求,服务器将检查安全代码和跟踪和跟踪代码是否链接。

我的问题是将安全代码存储在应用程序中的最佳方式是什么,以便应用程序可以请求它,并将跟踪和跟踪发送到服务器。我们希望用户只在第一次启动时输入安全码。

[[NSUserDefaults standardUserDefaults] boolForKey:@"security code"];

这是一个选择吗?

4

2 回答 2

2

user1805901> This security code will most likely be the customer number.

这有多可猜?如果丢失,您可能需要查看 UUID。在服务器上提供从 UUID 到客户编号的映射。

WDUK> For any secure data you wish to store on the device, I strongly advise you use the Keychain.

除了 Keychain,您还必须查看kSecAttrAccessibleWhenUnlockedkSecAttrAccessibleAfterFirstUnlockkSecAttrAccessibleAlwayskSecAttrAccessibleWhenUnlockedThisDeviceOnlykSecAttrAccessibleAfterFirstUnlockThisDeviceOnlykSecAttrAccessibleAlwaysThisDeviceOnly

kSecAttrAccessibleAlways并且kSecAttrAccessibleAlwaysThisDeviceOnly是有毒的,不应该使用,因为钥匙串会泄露数据。有关详细信息,请参阅iOS 钥匙串弱点(它变得更好,但它仍然可能是一个问题)。

*ThisDeviceOnly表示该密钥不包含在对其他设备的还原中。它有助于一些复制/粘贴攻击。

而且如果你不想把秘密放在云端,我相信 Keychain 属性需要包含com.apple.MobileBackup. 有关详细信息,请参阅技术问答 QA1719

杰夫

于 2013-01-25T23:12:18.863 回答