2013-01-03 2 views
6

Ich plane, In-App-Käufe zu verwenden, um einige Funktionen in meiner App freizuschalten. Was ist der sicherste Weg, dies zu tun?Sicherer Weg zum Freischalten der Vollversion über In-App Purchase

Ursprünglich wollte ich in den NSUserDefaults eine Bool setzen:

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

Aber ich bin nicht wirklich sicher, ob es eine Möglichkeit gibt, diesen Wert über einen „Hack“ zu setzen (wie NSUserDefaults verwaltet werden von iOS und nicht direkt von der App), so dass der Benutzer den In-App-Kauf nicht durchführen muss, um die Vollversion zu erhalten.

Was ist die beste Vorgehensweise, um damit umzugehen?

+0

Überprüfen Sie [diese Antwort] (http://stackoverflow.com/questions/4978852/storing-in-apppurchase-receipts -in der Anwendung-Keychain) für das Speichern im Keychain. – Eric

Antwort

1

Sie könnten es im Schlüsselbund speichern, aber dann auf einem Jailbroken-Gerät ist es auch einfach zu lesen und zu ändern. Also sollten Sie die Daten verschlüsseln. Stellen Sie sicher, dass das Verschlüsselungskennwort in Ihrer App nicht einfach gefunden werden kann, indem Sie die Binärdatei scannen.

8

Ja, es ist relativ einfach, die Anwendungspräferenzen zu ändern. Aber ist es wirklich wichtig? Ich würde wetten, dass jeder, der gewillt ist, sein iPhone-Dateisystem zu öffnen und Konfigurationsdateien zu ändern, um ein oder zwei Pfund zu sparen, nicht der Typ von Person ist, die geneigt wäre, das Geld auszugeben, wenn sie dazu nicht in der Lage wäre.

+1

Ich denke, du hast Recht. Es ist nicht wirklich die Mühe wert. – Patrick

3

Sicherheit durch Obfuscation ist der einfachste Weg, um hier zu gehen (zB nicht nennen Sie Ihre Var "isPro" und vielleicht haben sie nicht ihren Wert ein einfaches BOOL aber stattdessen haben sie eine "magische" Ganzzahl. Nicht idiotensicher aber eine andere Geschwindigkeit Beule zu knacken.

Als Alternative zu NSUserDefaults verwenden Sie eine Datei in der App-Dateisystem speichern kann und dann prüfen, seinen Inhalt bei App-Start.

Nicht sicher, es lohnt sich die Zeit und Mühe, aber.

0

Ich bin auf ein Problem gestoßen und habe zwei gängige Methoden für die sichere Speicherung von In-App Pu gefunden rchases:

1) Die Verwendung von sicheren Version von NSUserDefaults:

a) "Sichere NSUserDefaults". Diese Version von NSUserDefaults generiert Hash für jedes gespeicherte geheime Element und stellt Ihnen die Überprüfung dieses Hash für das Element nach. So können Sie leicht diese Situation von "Hack" defaults .plist von Benutzer behandeln.

prüfen: https://github.com/matthiasplappert/Secure-NSUserDefaults

b) "SecureNSUserDefaults". NSUserDefaults mit AES-Verschlüsselung. Ich rate hier, nicht nur sichere Bool-Werte für Einkäufe zu speichern, sondern eine verschleierte Zeichenfolge, um die Zahlung anzuzeigen oder nicht.

prüfen: https://github.com/nielsmouthaan/SecureNSUserDefaults

2) Mit KeyChain

a) "RSSecrets" Simple Klasse Schlüssel-Wert-Elemente in KeyChain zu speichern. Siehe auch Diskussion hier: Storing In App Purchase receipts in the application Keychain

Und überprüft Projekt: https://github.com/jeffargast/RSSecrets

b) "STKeychain" Meistens diese Klasse zum Speichern von Login/Pass in KeyChain verwendet, aber in Projekt von MKStroreKit (populär In-App-Käufen StoreKit für iOS-Geräte) sie verwenden diese Klasse tatsächlich zum Speichern von In-App-Käufen.

prüfen: https://github.com/ldandersen/STUtils/blob/master/Security/STKeychain.h

P. S. Ich bin noch keine dieser Klassen in meinem Projekt verwendet, aber denke, "RSSecrets" zu verwenden

+0

Muss der iCloud-Schlüsselbund aktiviert sein, damit Option 2) funktioniert? Wird Keychain auf Apple Watch funktionieren? –

+0

@AceGreen Wie ich mich richtig erinnere, müssen Sie iCloud nicht aktivieren, um Lösung 2) zu verwenden (im Moment des Jahres 2014 war es so). Und ich habe es auch nicht getestet, um es mit Apple Watch zu verwenden. –

+0

sollte es anders umgeformt haben. Ich denke, dass iCloud Keychain aktiviert werden muss, wenn Sie Keychain synchronisieren möchten, damit Sie Ihren Schlüssel auf Apple Watch erhalten, den Sie auf iOS eingestellt haben –

Verwandte Themen