5

私の iOS アプリにはロック画面があり、有効にすると全体がカバーされUIScreenます。ただし、UIScreen境界の外には、ロック画面でカバーされていない機密情報を含むペインがあります。(これらのペインは、画面のロックが解除されているときにスワイプして出し入れできます。)

範囲外の情報を持つことはどの程度安全UIScreenですか? 攻撃者は、ある種の外部ディスプレイ、デバッガー、またはその他のメカニズムを使用して、UIScreen画面の外側にあるものを「明らかにする」ことができますか?

【ロック画面はWKWebViewデフォルトで「虫めがね」機能がついた画面です。の端でトリガーされるとUIScreen、虫眼鏡がUIScreen端の後ろにあるものの数ピクセルを表示することを発見しました。それ以来、この回答で虫眼鏡を無効にしました。]

4

2 に答える 2

9

ビューを画面外に「隠す」ことは、まったく安全ではありません。ジェイルブレイクされたデバイスを持っている人なら誰でも、MobileSubstrate を使用して実行時にアプリにフックし、呼び出し[[[UIApplication sharedApplication] keyWindow] recursiveDescription]てビュー階層をダンプできます。Xcode のビュー デバッガーに似たインターフェイスを提供するRevealSpark InspectorなどのツールもありますUIWindow

ザンブリーが示唆したように、必要に応じて機密情報を含むビューを初期化し、それらが閉じられてユーザーが必要としなくなったときにビューを削除するのが最善です。この利点は安全性だけではありませんが、メモリ内のビューが少なくなるため、アプリのパフォーマンスが向上し、メモリ フットプリントが削減されます。

セキュリティが心配な場合は、実行時にジェイルブレイクされたデバイスを確認し、それらのデバイスの一部の機能を制限することをお勧めします。

于 2015-11-11T16:47:35.713 に答える
5

技術的には、メモリ内にあるものはすべて、ジェイルブレイクされたデバイスで公開される可能性があります。現在表示されているものの外側に機密ビューを非表示にすることは、セキュリティ対策ではありません。デバイスがジェイルブレイクされると、ビューとそれらのビューのコンテンツが公開されます。パスワードのテキストフィールドを「secureTextEntry」に設定して非表示にしても、テキストフィールドの割り当てを解除しない限り、アプリに付属のデバッガーで内容を読み取ることができます。また、テキストフィールドの割り当てが解除された場合でも、メモリがダンプされる可能性があり、そのメモリがまだオーバーライドされていない場合、そのビューの内容を見つける可能性があります。

ここで、ジェイルブレイクされたシナリオについて心配しておらず、ジェイルブレイクされていないデバイスを持っている人がビューを探索できる他のオプションのみを見つけたい場合は、おそらくiOS に含まれるアクセシビリティ機能を確認する必要があります。ビューのアクセシビリティが適切に無効になっていない場合、VoiceOver は非表示のテキストを読み上げることができます。親の変更がすべてのサブビューに影響を与える可能性があるため、アクセシビリティ ツールからビューを削除するのは難しい場合があります ( UIAccessibility のドキュメントを参照してください) 。

親ビューまたはビューでに設定するaccessibilityElementsHiddenと、機能するはずです。YESisAccessibilityElementNO

于 2015-11-12T00:10:24.543 に答える