2009-02-07 22 views
25

ben "Yardımcı Uygulaması" şablonun dayalı basit bir uygulama var. Parola korumalı bir XML dosyası (NSXMLParser aracılığıyla) alır.saklanması şifreleri

Kullanıcının "FlipsideView" e bir kullanıcı adı ve parola ayarlamasına izin vermek istiyorum, bunun için nasıl giderim?

Bir yerde temel var, görünüm yükler ( viewWillAppear yöntemini kullanarak) ve NSLog'd görünüşüdür kapatıldığında zaman sabit bir değere ayarlanır alır değeri olan iki UITextField kutuları, ( NSLog olan Sadece test etmek için, viewWillDisappear metodunda)

Verileri nasıl kaydederim? Geliştirici belgelerine bir göz attım ve NSUserDefaults kullanmalıyım gibi görünüyor mu?

cevap

33

Ben ile katılıyorum. Bu, Keychain'in ne için olduğu tam olarak dur.

Hiçbir koşulda parolaları dbr önerileri gibi varsayılan değerlerde saklamayız. Bu çok güvensiz. Esasen şifrelerinizi açık olarak saklıyorsunuz. iPhone Keychain Code

+0

Mükemmel ne kadar güvensiz yinelemek cevabını güncelledik! Bu sayfanın yorumlarında (derleme sırasında hataya neden olan) bir şey belirtildi, bunun için iPhoneOS Security.framework'ı dahil etmeniz gerekir. – dbr

+0

Bu, parolayı saklamak için mükemmel bir anlam ifade eder, ancak kullanıcı adının saklanmasıyla ilgili (parola almak için)? Uygulama güncellemeleri vb. Üzerine yazılmayacak bir şey. Oradaki tek şey varsa, userdefault'larda saklamak anlamsız görünüyor. –

4

Aha, NSUserDefaults iş gibi görünüyor ve kullanımı basit, ama ufak içinde güvenli değildir:

password UITextField için IBOutlet olduğunu. burada, erişimi başkası için oldukça kolay olurdu böylece

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    NSString *pword = [prefs objectForKey:@"password"]; 
    password.text = uname; 
} 

- (void)viewWillDisappear:(BOOL)animated{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:password.text forKey:@"password"]; 
} 

şifre, bir plist düz metin saklanır .. ancak bu hassas olmayan ayarları depolamak için yararlıdır.

kullanıcı adı alanını depolamak için bunu kullanıyorum ve Ağustos'un yanıtından SFHFKeychainUtils keychain code kullanarak parolayı saklayın.

+3

Bu çok güvensiz:

Apple'ın örnek koduna ek olarak, ben de Buzz Anderson'ın Anahtarlık kodunu öneriyoruz. Esasen şifreleri açık olarak saklıyorsun. – August

+0

Yeh, tamamen Anahtarlık unuttum .. ben sağolsun, – dbr

9

Bu Apple için Anahtarlık geliştirilen tam olarak ne olduğunu. Keychain'i kullanarak şifrenizi şifrelenmiş biçimde saklayabilirsiniz. Apple'ın GenericKeychain örneğine bir göz atın.

İlgili konular