2013-01-03 13 views
6

के माध्यम से पूर्ण संस्करण अनलॉक करने का सुरक्षित तरीका मैं अपने ऐप में कुछ विशेषताओं को अनलॉक करने के लिए इन-ऐप खरीद का उपयोग करने की योजना बना रहा हूं। ऐसा करने का सबसे सुरक्षित तरीका क्या है?इन-ऐप खरीद

मूल रूप से मैं NSUserDefaults में एक बूल स्थापित करने के लिए योजना बनाई:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isPro"];

लेकिन मैं सच में यकीन है कि वहाँ के माध्यम से एक "हैक" यह मान सेट करने के लिए एक संभावना है कि क्या नहीं कर रहा हूँ (के रूप में NSUserDefaults प्रबंधित कर रहे हैं आईओएस द्वारा और सीधे ऐप द्वारा नहीं) ताकि पूर्ण संस्करण प्राप्त करने के लिए उपयोगकर्ता को इन-ऐप खरीद करने की आवश्यकता न हो।

इसे संभालने का सबसे अच्छा अभ्यास क्या है?

+0

का उपयोग करने के लिए सोचें [यह उत्तर] (http://stackoverflow.com/questions/4978852/storing-in-app-purchase-receipts कुंजीपटल में स्टोर करने के तरीके के लिए -इन-द-एप्लिकेशन-कीचेन)। – Eric

उत्तर

1

आप इसे चाबी में सहेज सकते हैं, लेकिन फिर जेलब्रोकन डिवाइस पर इसे पढ़ने और बदलने में भी आसान है। तो आपको डेटा एन्क्रिप्ट करना चाहिए। सुनिश्चित करें कि बाइनरी स्कैन करके एन्क्रिप्शन पासवर्ड आपके ऐप में आसानी से नहीं मिल सकता है।

8

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

+1

मुझे लगता है कि आप सही हैं। यह वास्तव में प्रयास के लायक नहीं है। – Patrick

3

Obfuscation के माध्यम से सुरक्षा यहां जाने का सबसे आसान तरीका है (उदाहरण के लिए अपने var "isPro" का नाम न दें और शायद यह मान एक साधारण बूल नहीं है लेकिन इसके बजाय यह कुछ "जादू" पूर्णांक है। मूर्ख नहीं लेकिन एक और गति खुर को टक्कर।

NSUserDefaults का उपयोग कर आप अनुप्रयोग फाइल सिस्टम के लिए एक फ़ाइल को बचा सकता है के लिए एक विकल्प के रूप में और फिर इसे एप्लिकेशन लॉन्च पर सामग्री है की जाँच करें।

सुनिश्चित नहीं हैं कि यह समय और परेशानी हालांकि लायक है।

0

मुझे कुछ समस्या आई और इन-ऐप पु के सुरक्षित भंडारण के लिए दो सामान्य तरीके मिले rchases:

1) NSUserDefaults के सुरक्षित संस्करण का उपयोग करना:

क) "सुरक्षित NSUserDefaults"। NSUserDefaults का यह संस्करण किसी भी सहेजे गए गुप्त आइटम के लिए हैश उत्पन्न करता है और इसके बाद आइटम के लिए इस हैश की सत्यापन प्रदान करता है। तो, आप आसानी से "हैक" डिफ़ॉल्ट की इस स्थिति को सौदा कर सकते हैं। उपयोगकर्ता द्वारा प्लिस्ट।

यहाँ की जांच: https://github.com/matthiasplappert/Secure-NSUserDefaults

ख) "SecureNSUserDefaults"। एएसई एन्क्रिप्शन के साथ NSUserDefaults। मेरी सलाह यहां खरीद के लिए सुरक्षित बूल मूल्यों को न केवल संग्रहित करती है, बल्कि भुगतान के संकेत के लिए कुछ obfuscated स्ट्रिंग बल्कि नहीं।

यहाँ की जांच: https://github.com/nielsmouthaan/SecureNSUserDefaults

2) क) "RSSecrets" सरल वर्ग-चेन में मुख्य मान आइटम की दुकान करने के लिए कीचेन

का उपयोग करना। भी देखें यहाँ चर्चा: Storing In App Purchase receipts in the application Keychain

और जाँच परियोजना: https://github.com/jeffargast/RSSecrets

ख) "STKeychain" ज्यादातर इस वर्ग के लॉगिन के भंडारण के लिए इस्तेमाल किया/कीचेन में पारित, लेकिन MKStroreKit की परियोजना में (लोकप्रिय इन-ऐप खरीदारियां आईओएस उपकरणों के लिए स्टोरकिट) वे वास्तव में इन-ऐप खरीद को संग्रहीत करने के लिए इस कक्षा का उपयोग करते हैं।

यहाँ की जांच: https://github.com/ldandersen/STUtils/blob/master/Security/STKeychain.h

पी.एस. मैंने अभी तक अपने प्रोजेक्ट में इस कक्षा में से कोई भी उपयोग नहीं किया है, लेकिन "आरएसएसईक्रेट्स"

+0

क्या उपयोगकर्ता को विकल्प के लिए iCloud keychain सक्षम होना चाहिए 2) काम करने के लिए? ऐप्पल वॉच पर चाबी का काम करेगा? –

+0

@AceGreen जैसा कि मुझे सही याद है, आपको समाधान 2 का उपयोग करने के लिए iCloud को सक्षम करने की आवश्यकता नहीं है) (2014 के पल में यह इस तरह था)। और ऐप्पल वॉच के साथ उपयोग करने के लिए भी इसका परीक्षण नहीं किया गया था। –

+0

इसे अलग-अलग दोहराया जाना चाहिए था। मुझे लगता है कि यदि आप सिंक करने के लिए चाबी करना चाहते हैं तो iCloud Keychain को सक्षम करने की आवश्यकता है ताकि आप आईओएस पर सेट ऐप्पल वॉच पर अपनी कुंजी प्राप्त कर सकें –

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