Ich versuche einen Testabschnitt meiner Kakaoanwendung zu erstellen. Ich habe die Lizenzierung eingerichtet (einschließlich Schlüssel) usw.
Aber ich habe mich gefragt, wie ich zum Beispiel das erste Mal speichern könnte, wenn der Benutzer das Programm an einem sicheren Ort ausgeführt hat, wo der Benutzer es nicht leicht finden und / oder bearbeiten kann.
Ich hatte eine Geige mit NSUserDefaults standardUserDefaults, aber der Benutzer kann diese Daten in Library & gt; Einstellungen.
Ich würde dagegen argumentieren, es supersicher zu machen. Wir hatten einmal eine Serveraktivierung, aber wir haben uns komplett davon entfernt. Hier sind einige der Gründe:
Ich bin mir ziemlich sicher, dass es einige, aber extrem wenige Ausnahmen von diesen Gedanken gibt. Ich würde sagen: Verschwenden Sie Ihre Zeit nicht mit Registrierungssicherheit, aber geben Sie
Sie können keine Datei im Dateisystem verwenden. Jeder, der es ausprobieren oder knacken möchte, wird schlau genug sein, um den Dateizugriff über grundlegende Standard-OSX-Funktionen zu verfolgen. Also eine Datei hinzugefügt wird, ist out. Nicht nur das, aber es ist ein schlechtes Verhalten, Dateien zu erstellen, die Sie nicht entfernen, wenn die App deinstalliert wird. Personen sollten nach dem Löschen der Test-App keine Ressourcen verbrauchen müssen.
Wie oben erwähnt, ist es auch eine schlechte Idee, in Ihrem Bündel herumzualbern. Dies gibt Ihnen drei grundlegende Optionen.
1) Sorgen Sie sich nicht zu sehr darum. Verwenden Sie ein einfaches Ablaufsystem, das die Standardspeicherorte und -methoden verwendet. Sie können weiterhin Verschlüsselung in den Daten verwenden, die Sie speichern, aber wissen Sie, dass auch das kaputt gehen wird. Akzeptieren Sie, dass eine Urheberrechtsverletzung auftreten wird, sofern Ihre App nicht völlig unpopulär ist.
2) Verwenden Sie einen Netzwerkanruf und führen Sie die Überprüfung auf dem Server durch. Dies würde erfordern, dass die App immer in der Lage ist, Ihren Dienst zu erreichen, um ausgeführt zu werden. Dies ist im Allgemeinen keine gute Idee. Was ist, wenn Ihre Server ausgefallen sind? Was ist, wenn sie offline sind? Was passiert, wenn ein Netzwerkproblem zwischen Ihnen und Ihnen auftritt? Alle diese Szenarien werden passieren. Wenn dies der Fall ist, werden Sie wahrscheinlich Kunden verlieren, es sei denn, Ihre App benötigt bereits eine Verbindung zu Ihren Servern (wie beispielsweise Twitter oder Facebook).
3) Seien Sie ein "böser Bürger", indem Sie sich mit dem Anwendungspaket herumschlagen oder verwaiste Dateien hinterlassen. Wenn Sie dies tun, stellen Sie zumindest sicher, dass sie eindeutig benannt sind, so dass sie sich offensichtlich auf Ihre Bewerbung beziehen.
Letztendlich müssen Sie sich daran erinnern, dass Sie auf dem Computer eines Benutzers keine Sicherheit haben. Es gehört ihnen. Das bedeutet, dass sie physischen Zugang haben, der jeden Versuch, sie daran zu hindern, zu graben, ziemlich zunichte macht. Sie können es auch so sehen: Je technisch orientierter Ihr Markt ist, desto unwahrscheinlicher werden Sie schlauer als wir alle und Ihre "Sicherheit" wird geknackt werden. Wenn Sie für ein nicht-technisches Publikum entwerfen, dann können Sie sich vorstellen, dass sie sich im Allgemeinen nicht darum kümmern, es zu knacken oder nach einem zu suchen.
Sie können Ihre Ressourcen darauf verwenden, die App besser zu machen, oder Sie können sich ein besseres Gefühl dafür machen, dass Nutzer sie nach der Testphase nicht nutzen. Einer davon kann Ihren Umsatz steigern, und einer wird nicht.
[Bearbeiten] Auch sollte ich darauf hinweisen, dass eines der häufigsten (wenn nicht das üblichste) Mittel zum Knacken dieser Dinge ist, das Binärsystem zu modifizieren. Wenn Sie also Code-Signing durch Bündel-Mucking brechen, würden Sie sich tatsächlich für diese Methode öffnen, weil Sie einen der besseren Schutzmechanismen, die Sie haben, gebrochen hätten. Bei den meisten Rissen werden Binärdateien so geändert, dass die Routine, die die Prüfungen durchführt, immer eine erfolgreiche Authentifizierung zurückgibt.
Allan Odgaard hat eine ziemlich gute Zusammenfassung Verwenden Sie OpenSSL, um Lizenzschlüssel für Cocoa-Software zu generieren / zu speichern. Vielleicht lohnt sich ein Lesen.
Wenn es sein muss, ist ein einfacher und gebräuchlicher Weg, einen Schlüssel zu verwenden, der in die Anwendung eingebettet ist, die eine Datei auf dem Datenträger verschlüsselt, der die sensiblen Daten enthält. Die Herausforderung besteht darin, wie der Schlüssel gesichert werden kann.
Schauen Sie in das Common Crypto Digest-Bibliothek.
Dies schützt vor fast allen Gelegenheitsnutzern. Hacker können zwar mit genügend Motivation einen Umgehungsweg finden.
Versuchen Sie, eine Datei zu speichern, deren Name mit einem Punkt in einem Ordner beginnt, und dann das versteckte Flag der Datei zu setzen.
ein guter Ort, um die versteckte Datei zu legen wäre eine obskure benannte Datei in der Basis des Benutzer-Ordners (~ /), es gibt viele obskure versteckte Dateien, so dass es schwer zu wissen, welche Sie können und nicht können löschen. Beispielpfad: ~ / .xdarwinprofile oder etwas, das gleichermaßen offiziell klingt.
Hier ist ein Code, der die Datei verstecken sollte:
%Vor%Ich habe diesen Code von der Antwort auf diese Frage modifiziert. Vielleicht finden Sie dort weitere hilfreiche Informationen: Wie Sie eine Datei im Finder mithilfe von Objective unsichtbar machen -c
Ich habe diesen Code nicht getestet, aber es sollte funktionieren. In der Tat ist es möglich, dass der Code unnötig ist und nur die Datei mit einem Punkt vor dem Dateinamen gespeichert wird.
Wenn Sie Administratorrechte haben, können Sie einen sudo chmod für die Datei ausführen und ihn so einstellen, dass er nur liest, wenn Sie möchten, aber Sie sollten Ihre App nicht nach dem Passwort fragen lassen.
Diese Lösung hat für mich sehr gut funktioniert. Versuchen Sie Folgendes: Ссылка . Es wird verschlüsselt bool / string / float / integer in Ihrer UserDefaults-Datei gespeichert. Hoffentlich ist das was du willst. Stellen Sie sicher, dass Sie CocoaSecurity (siehe die GitHub-Seite von SecureNSUserDefaults für den Download-Link) zu Ihrem Projekt herunterladen und hinzufügen. CocoaSecurity ist ein erforderliches Element von SecureNSUSerDefaults, sodass Sie es nicht in eine Ihrer Dateien importieren müssen. Sie müssen auch Base64 herunterladen, das ein erforderliches Element von CocoaSecurity ist. Sie müssen Ihrem Projekt auch Base64 hinzufügen, müssen es jedoch nicht in eine Ihrer Dateien importieren.
VERWENDUNG
Importieren Sie die Headerdatei an einer beliebigen Stelle, an der Sie die Verschlüsselungsmethode verwenden möchten.
%Vor% Setzen Sie dann einen Verschlüsselungsschlüssel, wahrscheinlich in Ihrer awakeFromNib
Methode :
Ich empfehle, eine zufällige Zeichenfolge aus Zahlen und Buchstaben zu generieren. Dann müssen Sie die Informationen in Ihrer UserDefaults-Datei speichern.
%Vor%Um die Zeichenfolge abzurufen, verwenden Sie diese Methode:
%Vor%Ich hoffe, das hilft!
Tags und Links objective-c trial