JSSECが公開している『Androidアプリのセキュア設計・セキュアコーディングガイド』の2016-09-01版を共有用にまとめているもののうち、「5.1. パスワード入力画面を作る」のものとなります。
詳細やサンプルコードについては原著の方を参考ください。
チェックポイント
- 入力パスワードはマスク表示している
- パスワードを平文表示させるオプションが存在する
- 誤入力や、簡単なパスワードを避けさせるため
- パスワード表示オプションの危険性の注意喚起を行っている
- 覗き見される可能性等の危険性のため
- 平文表示は一定時間で、自動的にマスクをかけ直すようにしている
- Activity起動時はパスワードをマスク表示にする
- 意図せずに表示されて、パスワードが漏れる可能性を防ぐため
- ログイン失敗時のメッセージが、IDが存在しない場合も、パスワードが違う場合も同じである
- スクリーンキャプチャを無効にしている(推奨)
自動入力時は上に加え
- 前回入力したパスワードがある場合、固定桁数のダミーマスクを表示する
- 第三者にパスワードのヒントを与えないようにするため
- 前回ダミー表示時に、平文表示を押した場合、前回入力パスワードをクリアしている
- 前回ダミー表示時に、ユーザがパスワード入力しようとした場合、前回入力パスワードをクリアしている
Tips
自動ログインに関して
自動ログインは、便利ですが、盗難されたときに、第三者に悪用されるリスクが伴います。そのため、第三者に悪用された場合の被害が受け入れられる用途か十分なセキュリティ対策が可能な場合にのみ、利用することができます
例えば、クレジット決済など、特定の機能を使用する場合、再度パスワード入力を求める、ユーザーに注意喚起と端末ロックを促すなどが考えられます
パスワード変更に関して
パスワード変更を行う時は、現在のパスワード、新しいパスワード、確認用の新しいパスワードを用意すべきです
参考
『Android アプリのセキュア設計・セキュアコーディングガイド』【2016年9月1日版】
https://www.jssec.org/dl/android_securecoding.pdf