2015-04-19 16 views
5

La mia app iOS ha una schermata di blocco che, se abilitata, copre l'intero numero UIScreen. Tuttavia, al di fuori dei limiti UIScreen, ho riquadri con informazioni sensibili che non sono coperte dalla schermata di blocco. (I riquadri possono essere inseriti e rimossi quando lo schermo è sbloccato.)Quanto è sicuro le informazioni fuori schermo?

Quanto è sicuro disporre di informazioni al di fuori dei limiti UIScreen? Un utente malintenzionato può utilizzare una sorta di display esterno, un debugger o qualche altro meccanismo per "rivelare" ciò che si trova all'esterno della schermata UIScreen?

[La schermata di blocco è una WKWebView che per impostazione predefinita ha una funzione di "lente di ingrandimento". Ho scoperto che, una volta attivato ai bordi dello UIScreen, la lente d'ingrandimento mostra alcuni pixel di ciò che si trova dietro il bordo dello UIScreen. Da allora ho disabilitato la lente di ingrandimento con this answer.]

+1

Invece di preoccuparsi se qualcuno può ottenere informazioni fuori dallo schermo, una soluzione migliore sarebbe caricare le informazioni sensibili su richiesta. Ora, come ciò può essere fatto dipende completamente dalla tua implementazione. – zambrey

+0

Hey Randomblue, dovresti accettare una risposta se sei soddisfatto. In caso contrario, sentiti libero di rispondere a qualsiasi domanda. – JAL

risposta

9

Le schermate "nascoste" sullo schermo non sono affatto sicure. Chiunque disponga di un dispositivo Jailbroken può collegarsi all'app in fase di esecuzione utilizzando MobileSubstrate e chiamare lo [[[UIApplication sharedApplication] keyWindow] recursiveDescription] per eseguire il dump della gerarchia di visualizzazione. Ci sono anche strumenti come Reveal e Spark Inspector che forniscono un'interfaccia simile al debugger di visualizzazione Xcode per visualizzare qualsiasi vista attualmente nell'app UIWindow.

Come suggerito da zambrey, sarebbe preferibile inizializzare qualsiasi visualizzazione con le informazioni sensibili necessarie e rimuoverle quando vengono ignorate e non più necessarie dall'utente, piuttosto che tenerle fuori dalla vista ma ancora nella gerarchia delle finestre . I vantaggi di questo non sono solo la sicurezza, ma avere meno visualizzazioni in memoria migliorerà le prestazioni della tua app e ridurrà il suo impatto sulla memoria.

Se si è preoccupati per la sicurezza, si consiglia di verificare la presenza di un dispositivo jailbroken in fase di esecuzione e limitare alcune funzionalità per tali dispositivi.

+1

Uno dei motivi per cui molte banche non consentono alle loro app di funzionare su dispositivi jailbroken/rooted è proprio per questo. Anche su dispositivi non jailbreak, l'app viene immediatamente chiusa su qualsiasi tipo di uscita. – cybermonkey

+0

"Chiunque abbia un dispositivo jailbroken" -> che dire di un dispositivo non jailbroken? Sono principalmente interessato a quello scenario. – Randomblue

+0

@Randomblue bene, chiunque non abbia un dispositivo jailbroken probabilmente non sarà in grado di vedere le informazioni fuori schermo, a meno che non dispongano di una funzionalità di accessibilità che in qualche modo fosse in grado di aumentare le visualizzazioni nell'app o avesse un dispositivo con una dimensione dello schermo che non t conto nella tua vista che nasconde la logica, facendo sì che le tue visualizzazioni appaiano sullo schermo anziché sullo schermo. – JAL

5

Tecnicamente tutto ciò che è in memoria potrebbe essere esposto su un dispositivo jailbroken. Nascondere le opinioni sensibili al di fuori di ciò che è attualmente visualizzato non è una misura di sicurezza. Una volta eseguito il jailbreak del dispositivo, verranno visualizzate le viste e il contenuto di tali viste. Anche se hai un campo di testo della password impostato come "secureTextEntry" e anche se lo nascondi, il contenuto potrebbe essere letto con un debugger collegato all'app purché il campo di testo non sia deallocato. E anche quando il campo di testo è deallocato, la memoria può essere scaricata e se quella memoria non è stata sovrascritta, si potrebbe potenzialmente trovare il contenuto di quella vista.

Ora, se non si è preoccupati per lo scenario di Jailbroken e si desidera solo trovare altre opzioni in cui qualcuno con un dispositivo non jailbroken potrebbe esplorare le visualizzazioni, è consigliabile controllare lo Accessibility features included in iOS. VoiceOver sarà in grado di leggere ad alta voce il testo nascosto se l'accessibilità in quella vista non è disabilitata correttamente. Eliminare la vista da strumenti di accessibilità a volte è difficile perché un cambiamento sul genitore potrebbe interessare tutte le viste secondarie (leggi l'UIAccessibility documentation)

Impostazione accessibilityElementsHidden-YES nella vista genitore o isAccessibilityElement per NO nella vista, dovrebbe funzionare.