2012-08-27 14 views
7

Sto lavorando a un'app PhoneGap per Android/iOS.
Se ho capito bene, se qualcuno apre un pacchetto di app per PhoneGap, può semplicemente copiare html/js/css in una app per PhoneGap. Questo è qualcosa che mi piacerebbe rendere più difficile.

La mia app funziona senza la necessità di una connessione Internet attiva e vorrei mantenerla in questo modo.
La soluzione migliore che posso pensare è di memorizzare (parti di) i (40) file HTML in variabili native Java/ObjectiveC e recuperarli usando javascript e un plugin Phonegap personalizzato. In questo modo, l'HTML verrà crittografato anche durante la creazione dell'app.

Questa è una soluzione praticabile o una perdita di tempo?phonegap copy-protection

risposta

4

Se qualcosa è abbastanza prezioso da proteggere anche l'accesso delle persone (ad esempio i dettagli di autenticazione), inserirle in un codice compilato che non sono abbastanza sicure.

Altrimenti, cosa si ha in HTML, Javascript e CSS così prezioso? Non può essere il codice stesso, perché se non possono copiarlo possono solo guardarlo, andare "oh, è una buona idea" e copiare l'idea senza guardare il codice. Le buone idee sono più preziose delle linee di codice e non puoi nasconderle in questo modo. In questo caso, hai reso la vita più difficile per te in misura maggiore di quanto tu abbia reso più difficile per loro.

+0

In questa applicazione, penso che l'html sia la parte più importante. È una serie di esercizi linguistici, in cui domande, risposte corrette e feedback sono memorizzati all'interno dell'html e la funzionalità è piuttosto semplice. E hai ragione, non vorrei rendere la mia vita più difficile della loro. Dato che sono nuovo a questo tipo di problemi, mi stavo chiedendo se si potesse fare qualcosa senza troppi problemi. Sembra che tu suggerisca che la "soluzione" nella mia soluzione sarebbe scritta con la lettera maiuscola. Ricorda, non sto cercando una soluzione definitiva e sicura. – Kanarie

+0

Forse fare qualcosa come avere le risposte corrette in javascript come '" \ u0041 \ u0042 \ u0043 "' invece di '" ABC "' o nel codice HTML come '" A B C "'. Questo avrebbe solo rallentato una persona esperta di codice per meno di un minuto, ma avrebbe fermato un ragazzo meno esperto di codice che cercava di intrufolarsi "sul retro del libro", per così dire. –

+0

Grazie Jon, sarebbe bello se fossi interessato a rendere difficile per qualcuno ottenere le risposte giuste. Tuttavia il mio interesse principale è trovare un modo per rendere difficile a qualcun altro copiare il contenuto html/js/css in un'altra app per PhoneGap. Più ne leggo, più sembra che la soluzione migliore sia non fare nulla o andare fuori tutto e configurare un database e caricare dati crittografati da lì. – Kanarie

11

Questa è una delle mie risposte preferite da PhoneGap Google Group di Kerri Shotts. Mi piace perché incapsula i miei pensieri sull'argomento, ma lo fa in modo più eloquente del mio:

Non proprio. Sì, puoi offuscarlo, ma potrei decodificarlo. Puoicrittografarlo, ma ciò significa che la chiave è nel tuo codice da qualche parte, che significa che posso anche decrittografarlo. Una volta che ho il dispositivo e i tuoi bit, I può fare tutto ciò che voglio con loro.

Ricorda: il dispositivo e il sistema operativo non sono lì per proteggere l'app dagli utenti di . È lì per proteggere i tuoi utenti dalla tua app. Totalmente lato diverso alla sicurezza.

Tenere presente che ciò è in gran parte vero per le app native. Dammi un programma Java o ObjC e riesco a capire cosa fa abbastanza facilmente. Inoltre, nella maggior parte delle piattaforme, tutte le risorse grafiche sono solo file regolari , il che significa che possono essere facilmente copiati.

Ecco perché ci sono così tante app pirate/clonate là fuori. E alla fine, fino a quando ho i bit del tuo software, c'è il niente che tu possa fare al riguardo. Tutto quello che puoi fare è renderlo "più difficile" per l'utente - e quel livello di "durezza" è proporzionale (se non è esponenziale) allo sforzo richiesto per renderlo "più difficile" per l'utente. Cioè, se lo fai in modo che il 90% degli utenti non possa rompere il sistema, è un livello di difficoltà nell'indurire l'app; per renderlo quindi in modo che il 99% non possa craccarlo, è necessario un notevole salto nella programmazione della difficoltà .

È possibile, ovviamente, creare routine di decodifica on-the-fly nel codice nativo che legge una www/cartella crittografata. Se vuoi farlo, vai avanti . (Un hacker può ancora aggirarlo. C'è/sempre/un modo.) Sono Sono disposto ad andare così lontano? No.Non vale il mio tempo o il mio sforzo, specialmente quando non mi proteggerà da quelli che sono veramente interessati a clobbering me. [Un altro problema: il PG dovrebbe farlo? NO. Solo un esperto di sicurezza e la maggior parte degli sviluppatori no.]

Ho una visione pessimistica sulla sicurezza? Sì. Se si distribuiscono i bit , si perde la sicurezza. Pertanto, se hai bisogno del funzionamento di per essere molto sicuro, questi meccanismi dovrebbero essere off-device su un server molto sicuro da qualche parte dietro diversi firewall molto sicuri con bontà-sa quanta sicurezza nel mezzo per assicurarsi che nessuno è possibile che indovini in che modo l'app si sta persino autenticando su questo server.

Dico tutto questo semplicemente perché non credo che valga lo sforzo per la maggior parte delle app a preoccuparsi del fatto che la cartella www/è visibile ed esposta. Direi che per il 99,99% delle app questo è true. A meno che tu non stia lavorando nel settore sanitario (e informazioni sensibili al logging ) o governativo o bancario (con banche effettive), non devi preoccuparti di questo . E se lo sei, dovresti usare PG? Inoltre, dovresti essere addirittura sul dispositivo mobile? Meglio in la mia opinione è una webapp che ha un codice client molto piccolo ed è essenzialmente una scatola nera.

+0

Grazie Simone. Credo che dovrei imparare a smettere di preoccuparmi (e ad amare la bomba) – Kanarie