2013-01-25 100 views
1

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

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

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

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

这会是一个选项吗?

+0

难道不保护程序的东西存储在服务器上的,有点发送所述唯一电话ID(或编号?或任何),并在内部查一查?如果没有找到数据集,请询问用户针 – Najzero

+0

布尔只是真/假,你可能需要一个字符串。如果客户数量有些秘密,您可以考虑存储在钥匙串中。 –

回答

6
+0

听起来很棒,看看这个。 –

+0

钥匙串就是答案..切勿使用'NSUserDefault'来存储敏感信息。 – Krishnabhadra

1

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.

除了钥匙扣,你也得看kSecAttrAccessibleWhenUnlockedkSecAttrAccessibleAfterFirstUnlockkSecAttrAccessibleAlwayskSecAttrAccessibleWhenUnlockedThisDeviceOnlykSecAttrAccessibleAfterFirstUnlockThisDeviceOnlykSecAttrAccessibleAlwaysThisDeviceOnly

kSecAttrAccessibleAlwayskSecAttrAccessibleAlwaysThisDeviceOnly属于毒药,不应使用,因为钥匙串可能泄漏数据。有关详细信息,请参阅iOS Keychain Weaknesses(它变得更好,但仍然可能成为问题)。

*ThisDeviceOnly表示秘密不包含在对其他设备的恢复中。它对一些复制/粘贴攻击很有帮助。

如果你不想在云上的秘密,我相信钥匙串属性需要包括com.apple.MobileBackup。详情请参阅Technical Q&A QA1719

杰夫

相关问题