2012-08-27 16 views
7

Ich arbeite an einer phonegap-App für Android/iOS.
Wenn ich richtig verstehe, wenn jemand ein phonegap-app-Paket öffnet, kann er einfach die html/js/css in eine eigene phonegap-app kopieren. Das möchte ich noch etwas schwieriger machen.

Meine App funktioniert ohne die Notwendigkeit einer aktiven Internetverbindung, und ich möchte es so behalten.
Die beste Lösung, die ich mir vorstellen kann, ist das Speichern (Teile) der (40) HTML-Dateien in nativen Java/Objective Variablen und das Abrufen dieser mit Javascript und einem benutzerdefinierten Phonegap Plugin. Auf diese Weise wird der HTML-Code beim Erstellen der App ebenfalls verschlüsselt.

Ist dies eine praktikable Lösung oder Zeitverschwendung?phonegap Kopierschutz

Antwort

4

Wenn etwas wertvoll genug ist, um auch den Zugriff von Personen zu schützen (z. B. Authentifizierungsdetails), ist es nicht sicher genug, sie in kompilierten Code zu stecken.

Sonst, was haben Sie in der HTML, Javascript und CSS, die so wertvoll ist? Es kann nicht der Code selbst sein, denn wenn sie es nicht kopieren können, können sie es einfach anschauen, "Oh, das ist eine gute Idee" und die Idee kopieren, ohne den Code zu betrachten. Die guten Ideen sind wertvoller als die Codezeilen, und Sie können sie auf diese Weise nicht verstecken. In diesem Fall haben Sie das Leben für Sie schwerer gemacht, als Sie es für sie schwieriger gemacht haben.

+0

In dieser App denke ich, dass das HTML der wichtigste Teil ist. Es ist eine Reihe von Sprachübungen, in denen Fragen, richtige Antworten und Feedback im HTML gespeichert werden, und die Funktionalität ist ziemlich einfach. Und du hast Recht, ich möchte mein Leben nicht härter machen als ihr eigenes. Da ich neu bei diesen Problemen bin, habe ich mich nur gefragt, ob etwas ohne allzu viel Aufwand erledigt werden kann. Sie scheinen darauf hinzuweisen, dass "Ärger" in meiner Lösung mit einem großen H geschrieben würde. Wohlgemerkt, ich suche keine ultimative sichere Lösung. – Kanarie

+0

Vielleicht haben Sie so etwas wie die richtigen Antworten im Javascript als '" \ u0041 \ u0042 \ u0043 "' anstelle von '" ABC "' oder im HTML als '" A B C "'. Das verlangsamte eine Code-affine Person nur für weniger als eine Minute, aber es würde ein weniger codeversäumtes Kind aufhalten, das versuchte, sich "hinten im Buch" zu schleichen, sozusagen. –

+0

Danke Jon, das wäre gut, wenn ich daran interessiert wäre, es jemandem schwer zu machen, die richtigen Antworten zu bekommen. Mein Hauptinteresse liegt jedoch darin herauszufinden, wie es für andere schwierig wird, einfach den HTML/Js/CSS-Inhalt in eine andere Phonegap-App zu kopieren. Je mehr ich darüber lese, desto besser scheint es, dass die beste Lösung entweder darin besteht, nichts zu tun oder alles zu tun, eine Datenbank einzurichten und verschlüsselte Daten von dort zu laden. – Kanarie

11

Dies ist eine meiner Lieblings-Antworten von der PhoneGap Google Group von Kerri Shotts. Ich mag es, weil sie meine Gedanken zu diesem Thema kapselt, aber es eloquenter macht, als ich es könnte:

Nicht wirklich. Ja, Sie können es verschleiern, aber ich könnte es entschlüsseln. Sie können es verschlüsseln, aber das bedeutet, dass der Schlüssel in Ihrem Code irgendwo ist, was bedeutet, dass ich es auch entschlüsseln kann . Sobald ich das Gerät und Ihre Bits habe, kann ich alles tun, was ich will mit ihnen.

Denken Sie daran: Das Gerät und das Betriebssystem sind nicht dazu da, die App vor Ihren Benutzern zu schützen. Es dient dazu, Ihre Nutzer vor Ihrer App zu schützen. Total andere Seite der Sicherheit.

Denken Sie daran, dies gilt weitgehend für native Anwendungen. Gib mir ein Java oder ObjC Programm und ich kann auch leicht herausfinden, was es macht. Außerdem sind in den meisten Plattformen alle grafischen Assets nur reguläre Dateien, was bedeutet, dass sie leicht kopiert werden können.

Deshalb gibt es so viele Raubkopien/geklonte Apps da draußen. Und schließlich, solange ich die Bits zu Ihrer Software habe, gibt es nichts, was Sie dagegen tun können. Alles, was Sie tun können, ist es "härter" für den Benutzer zu machen - und das Niveau der "Härte" ist proportional (wenn nicht exponentiell), um die Anstrengung, es für den Benutzer "härter" zu machen. Das heißt, wenn Sie es so machen, dass 90% der Benutzer das System nicht knacken können, das ist ein Schwierigkeitsgrad in der Härtung der App; um es dann so zu machen, dass 99% es nicht knacken können, erfordert einen bedeutenden Sprung in der Programmierung Schwierigkeit.

Sie können natürlich sofort Entschlüsselungsroutinen in nativem Code erstellen, die einen verschlüsselten www/Ordner lesen. Wenn Sie das tun möchten, gehen Sie voraus. (Ein Hacker kann sich immer noch darum kümmern. Es gibt/immer/einen Weg.) Bin Ich will so weit gehen? Nee.Es ist nicht meine Zeit oder Mühe wert, vor allem, wenn es mich nicht vor denen schützen wird, die wirklich interessiert sind, mich zu verarschen. [Ein anderes Problem: sollte PG dies tun? NEIN. Nur ein Sicherheitsexperte, und die meisten Entwickler sind nicht.]

Habe ich eine pessimistische Sicht auf die Sicherheit? Ja. Wenn Sie die Bits verteilen, verlieren Sie die Sicherheit. Daher, wenn Sie die Funktionen von die App sehr sicher sein müssen, sollten diese Arbeiten außerhalb des Geräts auf einem sehr sicheren Server irgendwo hinter mehreren sehr sicheren Firewalls mit goodness-weiß, wie viel Sicherheit dazwischen sein, um sicherzustellen, niemand konnte immer raten, wie die App diesen Server authentifiziert.

Ich sage das alles einfach, weil ich nicht glaube, es lohnt sich die Mühe für die meisten Apps zu sorgen, dass das www/Ordner sichtbar und ausgesetzt ist. Ich würde so weit gehen zu sagen, dass für 99,99% der Apps dies wahr ist. Sofern Sie nicht im Gesundheitswesen arbeiten (und sensible Informationen notieren) oder Regierung oder Banken (mit tatsächlichen Banken), müssen Sie sich keine Sorgen machen darüber . Und wenn Sie sind, sollten Sie PG benutzen? Sollten Sie überhaupt auf dem mobilen Gerät sein? Besser in meiner Meinung nach eine Webapp, die sehr wenig Client-Code hat und im Wesentlichen eine Blackbox ist.

+0

Danke Simon. Ich denke, ich sollte lernen, mir Sorgen zu machen (und die Bombe zu lieben) – Kanarie