2009-12-25 7 views

Antwort

2

Ich schrieb die Benutzer Lizenzschlüssel und in „~/Library/Application Support/MyApplication/E-Mail in eine Datei passende License.myApplicationlicense ". Ich denke, das ist besser als die Verwendung von NSUserDefaults, da der Benutzer erwartet, dass er in der Lage ist, seine Prefs zu werfen, ohne dass etwas dramatisches passiert, wie das erneute Registrieren seiner Anwendung.

Die Datei ist nur der Inhalt eines NSDictionary geschrieben mit writeToFile: atomically: und lesen Sie mit DictionaryWithContentsOfFile :. Die Inhalte sind nicht verschlüsselt, aber das ist normalerweise nicht wichtig, abhängig davon, wie Ihr Lizenzschema funktioniert.

Ich würde auch vorschlagen, dass Sie einen Blick auf AquaticPrime werfen, wenn Sie dies bereits getan haben. Ich beschloss, mein eigenes Lizenzmodell zu erstellen, weil ich Lizenzcodes und keine Lizenzdateien wollte. Am Ende wäre ich besser in AquaticPrime geblieben, das kryptografisch sicherer ist als mein eigenes Lizenzsystem. Als ich AquaticPrime während meiner Beta benutzt hatte, habe ich die Lizenzdatei am selben Ort wie oben erwähnt gespeichert.

+0

Das ist genau das, was ich gemacht habe, außer dass ich NSKeyedArchiver verwendet habe, um die Daten anstelle von NSDictionary zu kodieren. Es bietet ein zusätzliches Maß an Sicherheit. Wie für AquaticPrime, siehe hierzu: http://toxicsoftware.com/aquaticprime-warning/ – Chetan

+0

Es sollte darauf hingewiesen werden, dass das, was hier beschrieben wird, ein binärer Riss zu der Software ist. Die Abwehr von Binär-Cracks ist etwas, das noch niemand gelöst hat, da sogar die Verschlüsselung der iPhone-App geknackt wurde. Sie müssen also entscheiden, was Sie erreichen möchten. Ich schlage vor, dass Sie ehrliche Leute ehrlich halten wollen und ein Lizenzschlüsselgenerierungssystem haben, das jemanden davon abhält, ihren eigenen Lizenzgenerator für Ihre App zu machen. AquaticPrime erreicht dies mit ein paar Vorbehalten. Sie sollten den Code kompilieren und den öffentlichen Schlüssel und die Methoden verschleiern. –

0

Sie können entweder NSUserDefaults oder ein eigenes System verwenden.

1

Ich habe mich für NSKeyedArchiver entschieden, da die Daten verschlüsselt bleiben, so dass es schwieriger ist, auf sensible Daten wie den Lizenzschlüssel und den aktivierten Status manuell zuzugreifen und diese zu ändern.

+0

Das könnte Sie interessieren http://www.cocoadev.com/index.pl?MAKeyedArchiver – RCIX

+0

Das sieht nützlich aus. Ich werde es versuchen. Ich habe dieses Lernprogramm verwendet, um den Lizenzschlüssel und die Aktivierungsinformationen in eine Datei im Anwendungsdatenordner des Benutzers zu schreiben: http://cocoadevcentral.com/articles/000084.php – Chetan

2

Ich schlage vor, den Schlüssel abhängig von einer benutzerspezifischen Sache, dh E-Mail oder vollständigen Namen oder vielleicht eine maschinenspezifische ID, wenn nötig. Dann können Sie es in der NSUserDefaults oder eine einfache Punkt namens Datei im Home-Verzeichnis des Benutzers speichern. Dies, ohne es verschlüsseln oder verrückte Verschleierung vornehmen zu müssen. Es wird Piraterie geben, seid euch sicher, ich glaube, das sind Leute, die sowieso nichts bezahlen würden, damit ihr nichts verliert. Indem der Schlüssel von einer benutzerspezifischen Sache abhängig gemacht wird, wird der Benutzer etwas resistenter, um ihn zu teilen.

Über Piraterie. Wie weit glaubst du können sie gehen? Ich machte ein kleines Werkzeug, das gut funktionierte, ohne etwas zu bezahlen. Aber als eine Belohnung für diejenigen, die die Anstrengung bei der Erstellung unterstützen möchten, fügte ich ein kleines Feature hinzu, um die Farbe der Graphen darin für nur $ 5 zu ändern. Nun, was haben sie gemacht? Jemand hat den Schlüssel tatsächlich umgearbeitet und einen Keymaker erstellt. Ich gebe zu, dass ich mich nicht zu sehr darum bemüht habe, den Algorithmus zu verschleiern, aber hey, ich habe mich mehr darauf konzentriert, allen netten Benutzern die Eingabe zu erleichtern, als einem Cracker das Leben schwer zu machen. Ich bin mehr glücklich darüber, dass sie dachten, dass meine kleine App die Mühe wert ist, den Schlüssel für das Reverse Engineering zu entwickeln.

Links:

10

Apple bietet eine umfassende Einrichtung für diese Art von Anforderung. Was Sie wollen, ist die Keychain API.

+1

+1 das ist die richtige antwort. Alle sensiblen Daten sollten im Schlüsselbund gespeichert werden. Ich würde den Lizenzschlüssel eines Benutzers "sensibel" nennen, denn wenn er ihn verliert, ist er weg. –

+1

Aber ich habe nie gesehen, dass eine Softwareanwendung ihren Lizenzschlüssel im Schlüsselbund speichert. Wenn der Benutzer den Lizenzschlüssel verliert, sollte er ihn in seiner E-Mail gespeichert haben oder er sollte den Kundendienst kontaktieren können. Selbst die Schlüsselbunddaten können verloren gehen, genau wie die Daten im Benutzerordner des Benutzers. – Chetan

Verwandte Themen