存储敏感数据的位置

时间:2014-04-11 12:28:29

标签: ios security plist nsuserdefaults keychain

在iOS设备上存储敏感(非安全)数据的最佳做法是什么? 我应该在哪里存储用户在应用中购买的信息?例如,如果用户购买了“BOOL showAds变量,我应该在哪里存储"删除广告&#34 ;? 我知道一切都可以破解,特别是在越狱设备上,我只是问最佳做法是什么。

我的变种:

    App文档中的
  1. .plist - 使用iFunBox编辑,例如
  2. NSUserDefaults - 我在这里相同
  3. 钥匙串 - 我认为目前为止最好的变种

2 个答案:

答案 0 :(得分:1)

您可以使用 base 64 encoding 数据将数据存储在NSUserDefaults中,以确保数据安全。

代码非常简单:

NSUserDefaults *persistValues;
persistValues = [NSUserDefaults standardUserDefaults];

设置数据(使用base 64编码):

// Create NSData object
NSData *nsdata = [@"iOS Developer Tips encoded in Base64" dataUsingEncoding:NSUTF8StringEncoding];

// Get NSString from NSData object in Base64
NSString *base64Encoded = [nsdata base64EncodedStringWithOptions:0];
[persistValues setObject:base64Encoded forKey:@"some_key"];

获取数据:

base64Encoded = [persistValues stringForKey:@"some_key"];
NSData *nsdataFromBase64String = [[NSData alloc]
initWithBase64EncodedString:base64Encoded options:0];

// Decoded NSString from the NSData
NSString *base64Decoded = [[NSString alloc] 
initWithData:nsdataFromBase64String encoding:NSUTF8StringEncoding];

如果您的数据更大,我建议您使用Web服务并将其存储在Web服务器中

答案 1 :(得分:0)

Keychain是存储敏感数据的最佳选择。

除以下敏感数据外,还有2个选项:

Small data可以作为最佳方式存储在NSUserDefault中,因为物理文件无法用于更改数据。

Bigger data可以存储在database encryption