2012-11-20 26 views
9

मैं भर एप्लिकेशन हां, तो मैं अपने लॉग-इन क्रेडेंशियल्स बनाए रखने के लिए 3 विकल्प हैं के लिए मेरे लॉग-इन क्रेडेंशियल बनाए रखने की जरूरत ...आईओएस में लॉगिन प्रमाण-पत्र बनाए रखने का सबसे अच्छा तरीका क्या है?

1 key chain 
2 NSUserDefaults 
3 plist 

कौन सा सबसे अच्छा चुनने के लिए एक है? क्या लॉग-इन क्रेडेंशियल स्टोर करने के लिए कोई और तरीका है? सुरक्षा सुविधा प्रदान करता है की वजह से अग्रिम

उत्तर

19

मैं लॉगइन क्रेडेंशियल्स संग्रहीत करने के लिए कीचेन का सुझाव देंगे में

धन्यवाद। आईओएस पर कीचेन सेवाएं पासवर्ड, चाबियाँ, प्रमाण पत्र इत्यादि जैसे सुरक्षित रूप से स्टोर करने का साधन प्रदान करती हैं

पासवर्ड और चाबियों जैसे संवेदनशील डेटा कीचेन में संग्रहीत किया जाना चाहिए। एप्पल के Keychain Services Programming Guide कहा गया है कि

"एक कीचेन एक एन्क्रिप्टेड कंटेनर कि कई के लिए पासवर्ड अनुप्रयोगों और सुरक्षित सेवाओं रखती है। Keychains सुरक्षित भंडारण कंटेनर, जो कि जब कीचेन लॉक किया गया है, कोई भी कर सकते हैं पहुँच का मतलब कर रहे हैं अपने संरक्षित सामग्री "।

यहां आपके लिए दो अच्छे ट्यूटोरियल हैं।

  1. How Not to Store Passwords in iOS
  2. Using Keychain to Store Username and Password
  3. How to secure user data
+0

हाय आपके त्वरित उत्तर के लिए धन्यवाद ... लेकिन मुझे इसमें कोई संदेह है ... ... मुख्य श्रृंखला में संग्रह करते समय सुरक्षित है लेकिन अनइंस्टॉल किए गए राज्य के दौरान मुख्य श्रृंखला में पासवर्ड नहीं हटाया जाएगा, फिर मैं कैसे इसे बनाए रखें? – Spynet

+0

भले ही ऐप हटा दिया गया हो और पासवर्ड कुंजीपटल में रखा गया हो, यह सुरक्षित है। ऐप हटा दिए जाने पर कीचेन से इसे हटाने का कोई तरीका नहीं है। यदि कुछ भी हो, तो पासवर्ड तब तक जारी रहेगा जब तक कि आपका ऐप दोबारा इंस्टॉल नहीं हो जाता। कोई भी इसका उपयोग नहीं कर सकता है या इसे देख सकता है। –

+0

@Spynet: यह एक मुद्दा होगा, आप अपने NSUSerDefault में केवल एक ध्वज जोड़कर इसे दूर कर सकते हैं। जब आवेदन चल रहा है तो पहले बूल की जांच करें। बूल इंगित करता है कि पासवर्ड कीचेन में सहेजा जाता है। –

-5

मुझे लगता है कि NSUserDefaults यहाँ लॉगइन क्रेडेंशियल्स स्टोर करने के लिए आसान तरीका है एक ट्यूटोरियल

http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/

+2

बदल जाएगा क्रेडेंशियल्स को 'NSUserDefaults' के साथ सादा पाठ के रूप में संग्रहीत किया जाएगा। यह सुरक्षित नहीं है। –

+0

@ जैकहम्फ्रीज़ ठीक है मैंने अभी कहा है कि –

+0

@JackHumphries को सुरक्षित रखना आसान है? –

0

यह link है मैं मैक ओएसएक्स और आईओएस कीचेन्स का उपयोग एनएसयूसर डीफॉल्ट के रूप में आसान बनाने के लिए किया गया है।

यह मैक OSX और आईओएस Keychains के चारों ओर एक KVO अनुरूप कोको आवरण है, और इस आवरण NSUserDefaults है के लिए मॉडल है, इसलिए मंशा है कि आम मामलों के लिए आप सामान्य रूप से कॉल करना चाहते हैं:

[NSUserDefaultsController sharedUserDefaultsController] 

आप और

[PDKeychainBindingsController sharedKeychainBindingsController] 

कॉल करने के लिए सक्षम होना चाहिए आम मामलों के लिए आप सामान्य रूप से कहा जाता है |:

[NSUserDefaults standardUserDefaults] 

आप कॉल करने के लिए

[PDKeychainBindings sharedKeychainBindings] 

कार्यान्वयन के बीच मतभेद की एक जोड़ी रहे हैं सक्षम होना चाहिए। सबसे पहले, यह वर्ग केवल तारों के लिए मान्य है, क्योंकि कीचेन स्वीकार करता है, इसलिए गैर-स्ट्रिंग ऑब्जेक्ट्स (जैसे सरणी और शब्दकोश और जैसे) लेने वाली विधियां कक्षा से छोड़ी गई हैं। दूसरा, अभी, केवल "तत्काल मोड" लागू किया गया है, इसलिए आप मानों का एक गुच्छा सेट नहीं कर सकते हैं और फिर केवल एक ही लिखने के लिए "सेव" पर कॉल कर सकते हैं, और "सहेजे गए मानों पर वापस लौटें" कार्यक्षमता नहीं है)।