2013-08-20 10 views
6

Sto sviluppando un'applicazione per iPad che si baserà su un database molto grande di informazioni preziose. Non ho molta familiarità con il dispositivo (non ho un iPad personale, né ne ho mai usato uno al di fuori dello sviluppo di questa app). Gli utenti non possono vedere direttamente i dati nel database attraverso la mia app da nessuna parte.Quanto accesso avranno i miei utenti a un database SQLite che spedisco con la mia app?

Ci sarebbe un altro modo in cui gli utenti possono accedere ai dati nel mio database (magari collegando il dispositivo al computer e passando attraverso Xcode o iTunes)? In caso contrario, ho letto un po 'di jailbreaking e ho visto che così facendo è possibile consentire a un utente di accedere al filesystem del dispositivo, in modo da consentire loro di vedere il contenuto del mio database? Oppure sarebbe possibile eseguire il jailbreak e installare un'app per visualizzare i file di database su dispositivi jailbreak (infatti, this question suggerirebbe che potrebbe essere abbastanza semplice sviluppare un'app "database reader" per dispositivi jailbroken)?

+3

l'utente medio di iDevice non conoscerebbe un database se lo si spingeva sul naso. Un utente esperto sarebbe in grado di recuperare facilmente i file db e prendere qualsiasi cosa/tutto dall'iDevice se lo desidera. –

+2

Conserva qualsiasi informazione importante sul database memorizzata su un server di database, non sull'iPad. Tutto ciò che è archiviato in un file/database locale sarà accessibile all'utente di iPad, sebbene sia possibile esaminare la crittografia di queste informazioni. –

risposta

5

Se il database è presente, le persone possono toccarlo. È solo questione di essere un po 'più di un utente esperto. Potrebbero non essere in grado di leggere i dati dal database se non hanno le credenziali per autenticarsi in esso, ma poi una volta che hai un database nel tuo hard disk, è solo una questione di pazienza e conoscenza per irrompere in esso .

Questo è un principio che si applica a qualsiasi dispositivo e sistema operativo, non solo iPad e iOS. Se non vuoi che i tuoi utenti si scontrino con qualche file che la tua app utilizza, puoi crittografarlo con una chiave di crittografia oscenamente lunga. Qualcuno potrebbe eventualmente rompere tali informazioni ... Tutto quello che puoi fare è assicurarti che non saranno in grado di farlo prima che la tua app sia comunque obsoleta.

Altrimenti, mantenere i dati su un server, dove le persone non possono toccarlo.

+0

Ah, questo è quello di cui avevo paura.Disponiamo anche dei dati su un server, ma uno dei requisiti dell'app è che deve essere funzionante al 100% anche se non c'è accesso a Internet - motivo per cui ho bisogno di archiviare tutto sul dispositivo nel primo posto. Non ho molta familiarità con la crittografia, ma sembra che sia qui che devo iniziare a cercare. – GeneralMike

+0

Le informazioni di cui hai bisogno sono confidenziali al 100% o solo alcune impostazioni con le quali non vuoi che l'utente si disastri? – Renan

+0

Altro sul lato riservato al 100%. La mia azienda ha raccolto dati importanti per il nostro settore per circa 20 anni, e questi sono i dati a cui ho bisogno di accedere. Il timore è che un cliente possa accedere a tali dati, copiarlo e non aver più bisogno dei nostri servizi, o girarsi e usarlo come un trampolino di lancio significativo per diventare un concorrente. – GeneralMike

1

Sono uno sviluppatore (non un hacker), non importa quanto io tenti di difendere le mie app, non appena il codice o il database si trovano sul dispositivo (crittografato o meno) Tratta i dati come pubblici. se la chiave di decrittografia viene passata al telefono e decodificata sul telefono, considera anche tali dati pubblici. fondamentalmente sei fregato. Smetti di difendere le tue app. e basta iniziare a costruire cose più interessanti, e utilizzare HTTPS quando si inviano dati su Internet, questo è tutto quello che posso chiedere. Difendere le tue chiavi, token Api, punteggi alti, monete, ecc. È letteralmente impossibile. Sì, provaci un po ', ma i tuoi sforzi sono infruttuosi. Ogni giorno gli strumenti di hacker pubblici per vedere all'interno di database crittografati localmente, applicazioni localmente crittografate, vedere all'interno di app offuscate, stanno migliorando sempre di più ogni giorno. non puoi batterlo gli sviluppatori non sono più intelligenti degli hacker, punto. Dare all'utente finale un falso senso di sicurezza. è come bloccare la tua casa o bloccare la tua auto, puoi impedire a qualcuno di entrare? no. l'unico modo per risolverlo è quello di costruire una banca big ass (aka server), mettere alcuni cassieri alla reception (aka cloud API), e farla finita.

0

Non sono uno sviluppatore IOS, ma conosco SQLite. È possibile crittografare i database in SQLite: cercare la documentazione sqlite3_key_v2(). La tua applicazione dovrà avere la password internamente, ma puoi renderti difficile per un hacker arrivare a quello. Non utilizzare una stringa statica come password, ma prendere una stringa e manipolarla a livello di codice. Ciò renderà più difficile, anche se non impossibile per un utente malintenzionato recuperare la chiave. Ma aggiungerà un ordine di grandezza più complesso da ottenere. L'utente malintenzionato dovrà ottenere l'accesso al file stesso del database e dovrà quindi eseguire il reverse engineering della propria app per recuperare la password del database.