2015-04-19 9 views
5

Meine iOS-App verfügt über einen Sperrbildschirm, der bei Aktivierung den gesamten Bereich UIScreen abdeckt. Außerhalb der UIScreen Grenzen habe ich jedoch Bereiche mit vertraulichen Informationen, die nicht durch den Sperrbildschirm abgedeckt sind. (Diese Fenster können ein- und ausgelesen werden, wenn der Bildschirm entsperrt ist.)Wie sicher sind Informationen außerhalb des Bildschirms?

Wie sicher ist es, Informationen außerhalb der UIScreen Grenzen zu haben? Kann ein Angreifer eine Art externes Display oder einen Debugger oder einen anderen Mechanismus verwenden, um zu "enthüllen", was sich außerhalb des Bildschirms UIScreen befindet?

[Der Verriegelungs Bildschirm ist eine WKWebView standardmäßig die eine „Lupe“ Funktion hat. Ich entdeckte, dass, wenn an den Rändern der UIScreen ausgelöst, die Lupe zeigt ein paar Pixel von dem, was ist hinter der UIScreen Kante. Ich habe seitdem die Lupe mit this answer deaktiviert.]

+1

Anstatt sich Gedanken darüber zu machen, ob jemand zu Informationen gelangen kann, die sich außerhalb des Bildschirms befinden, wäre eine bessere Lösung, die vertraulichen Informationen nach Bedarf zu laden. Wie das gemacht werden kann, hängt vollständig von Ihrer Implementierung ab. – zambrey

+0

Hey Randomblue, du solltest eine Antwort akzeptieren, wenn du zufrieden bist. Wenn nicht, zögern Sie nicht, irgendwelche Fragen zu beantworten. – JAL

Antwort

9

"Ausblenden" Ansichten Offscreen ist überhaupt nicht sicher. Jeder Benutzer mit einem Jailbroken-Gerät kann sich zur Laufzeit mit MobileSubstrat in Ihre App einklinken und [[[UIApplication sharedApplication] keyWindow] recursiveDescription] aufrufen, um die Ansichtshierarchie auszugeben. Darüber hinaus gibt es Tools wie Reveal und Spark Inspector, die eine Schnittstelle bereitstellen, ähnlich wie Xcode Ansicht Debugger UIWindow alle Ansichten zur Zeit in der App zu sehen. Wie von Zambrey vorgeschlagen, wäre es am besten, alle Ansichten mit vertraulichen Informationen nach Bedarf zu initialisieren und sie zu entfernen, wenn sie vom Benutzer nicht mehr benötigt werden, anstatt sie aus dem Blick zu behalten, aber immer noch in der Fensterhierarchie . Die Vorteile sind nicht nur die Sicherheit, sondern auch weniger Sichten im Speicher, was die Leistung Ihrer App verbessert und den Speicherbedarf reduziert.

Wenn Sie um die Sicherheit besorgt sind, möchten Sie vielleicht für ein jailbroken Gerät zur Laufzeit prüfen und einige Funktionen für diese Geräte beschränken.

+1

Einer der Gründe, warum viele Banken ihre Apps nicht auf jailbroken/gerooteten Geräten laufen lassen, ist genau das. Selbst auf Geräten ohne Jailbreak ist die App bei jeder Art von Exit sofort geschlossen. – cybermonkey

+0

"Jeder mit einem Jailbroken-Gerät" -> Was ist mit einem nicht-jailbroken Gerät? Ich bin hauptsächlich an diesem Szenario interessiert. – Randomblue

+0

@Randomblue Nun, jeder ohne ein Jailbroken-Gerät würde wahrscheinlich nicht in der Lage sein, Off-Screen-Informationen zu sehen, es sei denn, sie hatten eine Accessibility-Funktion, die irgendwie die Ansichten in Ihrer App erweitern konnte, oder hatte ein Gerät mit einer Bildschirmgröße Denken Sie in Ihrer Ansicht daran, die Logik zu verbergen, sodass Ihre Ansichten nicht auf dem Bildschirm, sondern auf dem Bildschirm angezeigt werden. – JAL

5

Technisch alles, was im Speicher ist, könnte auf einem jailbroken Gerät ausgesetzt werden. Es ist keine Sicherheitsmaßnahme, die sensiblen Ansichten außerhalb des aktuell angezeigten Bereichs zu verbergen. Sobald das Gerät jailbroken ist, werden die Ansichten und der Inhalt dieser Ansichten angezeigt. Selbst wenn Sie ein Passwort-Textfeld als 'secureTextEntry' festgelegt haben und selbst wenn Sie es ausblenden, können die Inhalte mit einem Debugger an die App angeschlossen gelesen werden, solange das Textfeld nicht freigegeben ist. Und selbst wenn das Textfeld freigegeben wird, könnte der Speicher ausgegeben werden, und wenn dieser Speicher nicht überschrieben wurde, könnten Sie möglicherweise den Inhalt dieser Ansicht finden.

Wenn Sie sich jetzt keine Sorgen über das Jailbroken-Szenario machen und nur andere Optionen finden möchten, bei denen jemand mit einem nicht jailbroken Gerät die Ansichten erkunden könnte, sollten Sie die Accessibility features included in iOS überprüfen. VoiceOver kann laute Texte lesen, die ausgeblendet sind, wenn die Zugänglichkeit in dieser Ansicht nicht ordnungsgemäß deaktiviert ist. Entfernen Ansichten von Eingabehilfen ist manchmal schwierig, weil eine Änderung auf dem übergeordneten könnte all Subviews beeinflusst (lesen Sie die UIAccessibility documentation)

Einstellung accessibilityElementsHidden-YES in der übergeordneten Ansicht oder isAccessibilityElement zu NO in der Ansicht soll, arbeiten.

Verwandte Themen