2009-02-07 15 views
25

मेरे पास "उपयोगिता अनुप्रयोग" टेम्पलेट के आधार पर एक साधारण एप्लिकेशन है। यह एक पासवर्ड-सुरक्षित एक्सएमएल फ़ाइल (NSXMLParser के माध्यम से) पुनर्प्राप्त करता है।आईफोन अनुप्रयोगों में पासवर्ड संग्रहीत

मैं उपयोगकर्ता को "फ्लिपसाइड व्यू" में उपयोगकर्ता नाम और पासवर्ड सेट करने की अनुमति देना चाहता हूं, तो मैं इसके बारे में कैसे जाऊं?

मैं जगह में मूल बातें है, दो UITextField बक्से, जिसका मूल्य एक निश्चित मान पर सेट हो जाता है जब दृश्य भार (viewWillAppear पद्धति का उपयोग करके), और NSLog'd जब दृश्य बंद कर दिया है (NSLog है बस परीक्षण, जाहिर है, viewWillDisappear विधि में) के लिए

मैं कैसे डेटा स्टोर करते हैं? मैंने डेवलपर दस्तावेज़ों पर एक नज़र डाली है, और ऐसा लगता है कि मुझे NSUserDefaults का उपयोग करना चाहिए ..?

उत्तर

33

मैं बेन से सहमत हूं। यह बिल्कुल है कि कीचेन क्या है।

मैं किसी भी परिस्थिति में डिफ़ॉल्ट रूप से डिफ़ॉल्ट रूप से पासवर्ड संग्रहीत नहीं करता क्योंकि डीबीआर सुझाव देता है। यह बेहद असुरक्षित है। आप अनिवार्य रूप से खुले में अपने पासवर्ड संग्रहीत कर रहे हैं। iPhone Keychain Code

+0

बिल्कुल सही, धन्यवाद! उस पृष्ठ की टिप्पणियों में एक बात सामने आई (जिसने संकलन करते समय त्रुटि उत्पन्न की), आपको इसे काम करने के लिए आईफोनओएस सुरक्षा.फ्रेमवर्क शामिल करना होगा। – dbr

+0

यह पासवर्ड संग्रहीत करने के लिए सही समझ में आता है, लेकिन उपयोगकर्ता नाम (पासवर्ड पुनर्प्राप्त करने के लिए) को संग्रहीत करने के बारे में क्या है? ऐसा कुछ जो ऐप अपडेट इत्यादि पर अधिलेखित नहीं होता है। यह उपयोगकर्ता के दोषों में स्टोर करने के लिए व्यर्थ लगता है अगर यह एकमात्र चीज है। –

4

अहा, NSUserDefaults काम करने के लिए लगता है, और प्रयोग करने में आसान है, लेकिन थोड़ी सी भी में सुरक्षित नहीं है:

password UITextField के लिए IBOutlet है।

- (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"]; 
} 

पासवर्ड एक plist में सादे-पाठ में संग्रहीत किया जाता है, इसलिए इसे किसी और का उपयोग करने के लिए काफी आसान होगा .. लेकिन इस गैर संवेदनशील सेटिंग्स संग्रहीत करने के लिए उपयोगी है।

मैंने उपयोगकर्ता नाम फ़ील्ड को स्टोर करने के लिए इसका उपयोग समाप्त कर दिया, और अगस्त के उत्तर से SFHFKeychainUtils keychain code का उपयोग करके पासवर्ड संग्रहीत किया।

+3

यह बहुत असुरक्षित है:

एप्पल के नमूना कोड के अलावा, मैं भी बज़ एंडरसन की कीचेन कोड सलाह देते हैं। आप अनिवार्य रूप से खुले में पासवर्ड संग्रहीत कर रहे हैं। – August

+0

ये, मैं पूरी तरह से कीचेन के बारे में भूल गया .. मैंने जवाब दोहराया है कि यह कितना असुरक्षित है – dbr

9

यह वही है जो ऐप्पल ने कीचेन विकसित किया था। कीचेन का उपयोग करके, आप अपना पासवर्ड एन्क्रिप्टेड रूप में स्टोर कर सकते हैं। ऐप्पल के GenericKeychain नमूना पर एक नज़र डालें।

संबंधित मुद्दे