Насколько защищена информация вне экрана?
В моем приложении для iOS есть экран блокировки, который при включении покрывает весь UIScreen
, Однако за пределами UIScreen
у меня есть панели с конфиденциальной информацией, которые не закрыты экраном блокировки. (Эти панели можно перетаскивать, когда экран разблокирован.)
Насколько безопасно иметь информацию за пределами UIScreen
границы? Может ли злоумышленник использовать какой-либо внешний дисплей, или отладчик, или какой-то другой механизм, чтобы "раскрыть" то, что находится за пределами UIScreen
экран?
[Экран блокировки WKWebView
который по умолчанию имеет функцию "увеличительное стекло". Я обнаружил, что при срабатывании на краях UIScreen
увеличительное стекло показывает несколько пикселей того, что находится за UIScreen
край. С тех пор я отключил увеличительное стекло с помощью этого ответа.]
2 ответа
"Скрывать" взгляды за кадром совсем не безопасно. Любой человек с взломанным устройством может подключиться к вашему приложению во время выполнения с помощью MobileSubstrate и вызвать [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
сбросить иерархию представления. Существуют также такие инструменты, как Reveal и http://sparkinspector.com/, которые предоставляют интерфейс, аналогичный отладчику представлений Xcode, для просмотра любых представлений, которые в настоящее время находятся в приложении. UIWindow
,
Как предположил zambrey, было бы лучше инициализировать любые представления с конфиденциальной информацией по мере необходимости и удалять их, когда они отклоняются и больше не нужны пользователю, вместо того, чтобы держать их вне поля зрения, но все еще в иерархии окон. Преимуществами этого являются не только безопасность, но и меньшее количество просмотров в памяти улучшит производительность вашего приложения и уменьшит объем памяти.
Если вы беспокоитесь о безопасности, вы можете проверить наличие взломанного устройства во время выполнения и ограничить некоторые функции для этих устройств.
Технически все, что находится в памяти, может быть открыто на взломанном устройстве. Скрытие чувствительных видов за пределами того, что отображается в данный момент, не является мерой безопасности. После того, как устройство будет взломано, будут открыты представления и содержимое этих представлений. Даже если у вас есть текстовое поле пароля, установленное как "secureTextEntry", и даже если вы его скрываете, содержимое может быть прочитано с помощью отладчика, прикрепленного к приложению, если текстовое поле не освобождено. И даже когда текстовое поле освобождено, память может быть выгружена, и если эта память еще не была переопределена, вы потенциально можете найти содержимое этого представления.
Теперь, если вас не беспокоит сценарий Jailbroken, и вы хотите найти только другие варианты, в которых кто-то с не взломанного устройства может исследовать представления, вам, вероятно, следует проверить специальные возможности, включенные в iOS. VoiceOver сможет считывать громкий текст, который скрыт, если доступность в этом представлении не отключена должным образом. Удаление представлений из инструментов специальных возможностей иногда сложно, поскольку изменение в родительском элементе может повлиять на все подпредставления ( см. Документацию UIAccessibility).
настройка accessibilityElementsHidden
в YES
в родительском представлении или isAccessibilityElement
в NO
по мнению, должно работать.