在iPhone上保护应用数据

时间:2012-11-26 17:27:53

标签: ios iphone xcode security

EDITED

好吧,抛开投票否定并不能真正帮助解决问题。如果您没有任何有用的说法,并且您对此问题不感兴趣,只需更改页面即可。如果您反而有想法,或者您只是对了解不同的方法感兴趣,那么即使您的评论不完美或仅仅是一个实验的想法,您的评论也是受欢迎的

问题:

我需要将应用程序数据存储在iPhone应用程序中。

我们最初使用经典的NSDocumentDirectory路径存储数据......但这种方法有多“安全”?

在不考虑越狱设备的情况下(我目前对此并不感兴趣),似乎任何用户(在任何正版设备上)都可以使用简单的iPhone浏览软件导航到此文件夹并弄乱内容,有效地进行黑客攻击。

如果是这种情况,那么为了存储安全的通用数据(在这种情况下不一定是密码),最好的“地方”或“方法”是什么。

即使在这些情况下,KeyChain是否也是正确的方式,还是有更好的/替代方式?

注意和核心问题:

我知道用密钥等加密和保护数据。我不是在谈论“混淆或保护他们的内容”

这里的问题不同了。所以让我们这样说:

“你如何避免用户可以访问存储文件(数据,加密,sql文件,你喜欢的任何东西)的文件夹,并以任何方式搞砸它们(这可能是删除它们,复制它们,使用十六进制编辑器访问它们并修改值,等等。

这不是他们用它做什么这一点,而是一个更加严格的如何确保用户无法联系到他们

由于

2 个答案:

答案 0 :(得分:4)

您可以使用加密算法保护数据并保存在sqlite数据库或文档字典中的文件中。

请查看此application,此应用程序解释AES算法使用安全密钥加密或解密数据。

在应用程序中使用存储库AES256AndBase64中的帮助程序类, 您所需文件中的#import "NSString+AESCrypt.h"

使用AES256EcryptWithKey:AES256DecryptWithKey:方法加密/解密数据:

NSString* dummyString=@"Steve Job";

NSLog(@"Normal String- %@",dummyString);

NSString* encrypt_decrypt_Key=@"apple";

NSString *encryptString = [dummyString
                              AES256EncryptWithKey:encrypt_decrypt_Key];

NSLog(@"Encrypt String- %@",encryptString);

NSString *decryptString = [encryptString
                           AES256DecryptWithKey:encrypt_decrypt_Key];

NSLog(@"Decrypt String- %@",decryptString);

或者,如果您使用的是iOS 5及更高版本,请查看此blog

答案 1 :(得分:0)

我不确定,但在删除iphone中的应用后,键链值不会被删除。

加密是一种方法。或者您可以尝试使用一些散列算法(如SHA或MD5)来散列数据。散列后,将数据和散列数据保存到NSDocumentDirectory。当您需要数据时,通过查看散列数据来检查其是否已更改。