機密性の高いアクティビティを保護する

このドキュメントでは、ユーザーのログインやオンライン購入などの機密性の高いアクティビティをモニタリングする方法について詳しく説明します。

FLAG_SECURE

FLAG_SECURE は、スクリーンショットを許可しない、またはセキュアでないディスプレイ(画面のキャストなど)にウィンドウ ビューを表示しないよう Android に指示するウィンドウ フラグです。これは、バンキング アプリやパスワード マネージャーなど、機密情報を保護する必要があるアプリケーションに便利です。ウィンドウに FLAG_SECURE のフラグが設定されている場合、Android はスクリーンショットの撮影を禁止し、テレビやプロジェクタなどのセキュアでないディスプレイにウィンドウが表示されないようにします。これにより、ウィンドウに表示されている情報への不正アクセスを防ぐことができます。

不正行為の軽減にどのように役立つか

不正なアプリやエンティティがバックグラウンドのスクリーンショットを取得する可能性があります。アプリの状態がバックグラウンドに変わると、FLAG_SECURE を使用できます。スクリーンショットを撮ると、結果の画像が空白になります。

FLAG_SECURE は、リモート画面共有のユースケースにも役立ちます。スクリーンショットを取得するのは必ずしも悪意のあるアプリとは限りません。正当な画面共有アプリも、不正な状況でよく使用されています。

実装

保護する情報を含むビューには、次のものを追加します。

Kotlin

window?.setFlags(
    WindowManager.LayoutParams.FLAG_SECURE,
    WindowManager.LayoutParams.FLAG_SECURE
)

Java

window.setFlags(
  WindowManager.LayoutParams.FLAG_SECURE,
  WindowManager.LayoutParams.FLAG_SECURE
);

おすすめの方法

このアプローチはオーバーレイ攻撃の防止には信頼性が低いことに注意してください。画面録画がアクティブかどうかを正しく予測できない場合もありますが、ほとんどのユースケースに対応しています。オーバーレイ攻撃を軽減するには、次のセクションの HIDE_OVERLAY_WINDOWS 権限をご覧ください。

HIDE_OVERLAY_WINDOWS

HIDE_OVERLAY_WINDOWS は、Android 12 で追加された権限です。アプリは、アプリ オーバーレイが描画されないようにオプトアウトできます。Android 12 では、SYSTEM_ALERT_WINDOW 権限の取得が難しくなっており、アプリでサードパーティ製アプリからのオーバーレイをブロックできるようになっています。

不正行為の軽減にどのように役立つか

HIDE_OVERLAY_WINDOWS 権限を有効にすると、アプリの上にアプリケーション オーバーレイを描画しないようにオプトアウトできます。この権限は、クロークと短剣攻撃に対する保護メカニズムを提供します。

実装

この権限を有効にするには、プロジェクトのマニフェストに HIDE_OVERLAY_WINDOWS を追加します。

おすすめの方法

他の権限と同様に、オーバーレイ アプリはデバイス上の他のアプリと同程度に信頼できる必要があります。つまり、他のアプリが信頼できるとわかっている場合を除き、他のアプリがオーバーレイを描画することを許可すべきではありません。アプリが他のアプリの上に描画することを許可すると、パスワードが盗まれたり、メッセージが読み取られたりする可能性があるため、危険です。