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

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

フラグ_セキュア

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 を追加します。

おすすめの方法

他の権限と同様に、オーバーレイ アプリは、少なくともデバイス上の他のアプリを信頼するのと同程度に信頼する必要があります。つまり、信頼できるアプリであるということがわかっていない限り、他のアプリがオーバーレイを描画できないようにする必要があります。あるアプリが他のアプリの上に重ねることを許可すると、パスワードを盗んだり、メッセージを読んだりする可能性があるため、危険です。