2009-12-25 11 views
5

उपयोगकर्ता अपनी लाइसेंस कुंजी में प्रवेश करने के बाद, मेरा एप्लिकेशन स्वयं को उस कुंजी (ऑनलाइन) से सक्रिय करता है। मैं इस सक्रिय स्थिति और लाइसेंस कुंजी को कैसे संग्रहीत करूं ताकि अगली बार जब उपयोगकर्ता ऐप खोलता है, तो ऐप को पता चलेगा कि यह पहले ही सक्रिय है?मेरे कोको एप्लिकेशन को उपयोगकर्ता की लाइसेंस कुंजी कैसे स्टोर करनी चाहिए?

उत्तर

2

मैं सिर्फ लिखा था उन कुंजी और लाइसेंस "में एक फाइल करने के लिए ईमेल मिलान ~/Library/अनुप्रयोग समर्थन/MyApplication/License.myApplicationlicense "। मुझे लगता है कि यह NSUserDefaults का उपयोग करने से बेहतर है क्योंकि उपयोगकर्ता अपने प्रीफ को टॉस करने में सक्षम होने की उम्मीद कर सकता है, बिना किसी नाटकीय घटना के अपने आवेदन को फिर से पंजीकृत करना।

फ़ाइल सिर्फ लिखने के लिए लिखित एनएस डिक्शनरी की सामग्री है: परमाणु रूप से: और dictionaryWithContentsOfFile का उपयोग करके पढ़ें:। सामग्री एन्क्रिप्टेड नहीं हैं लेकिन यह आमतौर पर महत्वपूर्ण नहीं है कि आपकी लाइसेंस योजना कैसे काम करती है।

मैं यह भी सुझाव दूंगा कि आप AquaticPrime पर एक नज़र डालें, यदि आपने पहले से ऐसा नहीं किया है। मैंने अपनी खुद की लाइसेंस योजना शुरू करने का फैसला किया क्योंकि मैं लाइसेंस कोड चाहता था और लाइसेंस फाइल नहीं चाहता था। अंत में मुझे लगता है कि मैं एक्वाटिकप्रिम से चिपकने से बेहतर रहा होगा जो मेरी अपनी लाइसेंस योजना से अधिक क्रिप्टोग्राफ़िक रूप से सुरक्षित है। जब मैं अपने बीटा के दौरान एक्वाटिकप्रिम का उपयोग कर रहा था, मैंने उपरोक्त वर्णित उसी स्थान पर लाइसेंस फ़ाइल संग्रहीत की थी।

+0

यह वही है जो मैंने किया था, सिवाय इसके कि मैंने NSKeyedArchiver का उपयोग NSDictionary के बजाय डेटा को एन्कोड करने के लिए किया था। यह एक अतिरिक्त स्तर की सुरक्षा जोड़ता है। एक्वाटिकप्रिम के लिए, इसे देखें: http://toxicsoftware.com/aquaticprime-warning/ – Chetan

+0

यह इंगित किया जाना चाहिए कि यहां वर्णित क्या है सॉफ़्टवेयर के लिए बाइनरी क्रैक। बाइनरी दरारों के खिलाफ बचाव कुछ ऐसा है जो किसी ने अभी तक हल नहीं किया है कि आईफोन ऐप एन्क्रिप्शन भी क्रैक हो गया है। तो आपको यह तय करने की आवश्यकता है कि आप क्या हासिल करना चाहते हैं। मैं प्रस्ताव करता हूं कि आप ईमानदार लोगों को ईमानदार रखना चाहते हैं और लाइसेंस कुंजी उत्पादन प्रणाली है जो किसी को आपके ऐप के लिए अपना लाइसेंस जनरेटर बनाने से रोकती है। AquaticPrime कुछ चेतावनी के साथ इसे पूरा करता है। आपको सार्वजनिक कुंजी और विधियों को कोड को संकलित और obfuscate करना चाहिए। –

0

आप या तो एनएसयूसर डीफॉल्ट या अपनी खुद की रचना प्रणाली का उपयोग कर सकते हैं।

1

मैंने NSKeyedArchiver का उपयोग करने का निर्णय लिया है क्योंकि यह डेटा एन्कोड किया जाता है, इसलिए लाइसेंस कुंजी और सक्रिय स्थिति जैसे संवेदनशील डेटा को मैन्युअल रूप से एक्सेस करना और बदलना कठिन होता है।

+0

आपको रुचि हो सकती है http://www.cocoadev.com/index.pl?MAKeyedArchiver – RCIX

+0

यह उपयोगी लग रहा है। मैं कोशिश करूँगा। मैंने उपयोगकर्ता के एप्लिकेशन डेटा फ़ोल्डर में फ़ाइल में लाइसेंस कुंजी और सक्रियण जानकारी लिखने के लिए इस ट्यूटोरियल का उपयोग किया: http://cocoadevcentral.com/articles/000084।php – Chetan

2

मैं सुझाव देता हूं कि उपयोगकर्ता विशिष्ट चीज़, यानी ईमेल या पूर्ण नाम या शायद आवश्यक होने पर मशीन विशिष्ट आईडी पर निर्भर हो। फिर आप इसे उपयोगकर्ता होम निर्देशिका में NSUserDefaults या सादा डॉट नाम फ़ाइल में संग्रहीत कर सकते हैं। इसे एन्क्रिप्ट करने या कुछ पागल obfuscation बनाने के बिना यह। इसके बारे में समुद्री डाकू सुनिश्चित हो जाएगा, मेरा मानना ​​है कि यह ऐसे लोग हैं जो किसी भी चीज के लिए कभी भी भुगतान नहीं करेंगे, इसलिए आप वास्तव में कुछ भी नहीं खोते हैं। किसी उपयोगकर्ता विशिष्ट चीज़ पर कुंजी निर्भर करने से उपयोगकर्ता इसे साझा करने के लिए थोड़ा अधिक प्रतिरोधी बनाता है।

समुद्री डाकू के बारे में। आपको कितना लगता है कि वे जा सकते हैं? मैंने एक छोटा सा टूल बनाया जो कुछ भी भुगतान किए बिना ठीक काम करता था। लेकिन उन लोगों के लिए एक इलाज के रूप में जो इसे बनाने में प्रयास का समर्थन करना चाहते हैं, मैंने इसमें केवल $ 5 के लिए ग्राफ के रंग को बदलने के लिए एक छोटी सी सुविधा जोड़ा। अच्छा, उन्होंने क्या किया? किसी ने वास्तव में कुंजी को इंजीनियर किया और उन्होंने एक कीमेकर बनाया। मैं मानता हूं कि मैंने एल्गोरिदम को खराब करने में बहुत अधिक प्रयास नहीं किया है, लेकिन हे, मैंने सभी असली अच्छे उपयोगकर्ताओं को किसी भी क्रैकर के लिए जीवन कठिन बनाने के बजाय इनपुट करने में आसान बना दिया है। मैं इस बारे में अधिक खुश हूं कि उन्होंने सोचा कि मेरा छोटा ऐप अभियंता को कुंजी के विपरीत करने के प्रयास के लायक था।

लिंक:

10

ऐप्पल इस तरह की आवश्यकता के लिए एक व्यापक सुविधा प्रदान करता है। आप जो चाहते हैं वह कीचेन एपीआई है।

+1

+1 यह सही उत्तर है। किसी भी संवेदनशील डेटा कीचेन में संग्रहित किया जाना चाहिए। मैं उपयोगकर्ता की लाइसेंस कुंजी को "संवेदनशील" कहूंगा क्योंकि अगर वे इसे खो देते हैं, तो यह चला गया है। –

+1

लेकिन मैंने कभी भी किसी भी सॉफ्टवेयर एप्लिकेशन को कीचेन में अपनी लाइसेंस कुंजी स्टोर नहीं देखा है। यदि उपयोगकर्ता लाइसेंस कुंजी खो देता है, तो उन्हें अपने ईमेल में सहेजा जाना चाहिए या वे ग्राहक सहायता से संपर्क करने में सक्षम होना चाहिए। यहां तक ​​कि कीचेन डेटा भी खो सकता है, उपयोगकर्ता के घर फ़ोल्डर में डेटा के समान। – Chetan

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