1. ホーム
  2. android

[解決済み] Androidでアクセストークンとシークレットを安全に保存するには?

2022-06-11 11:34:16

質問

oAuthを使って、googleからメールや連絡先を取得しようと思っています。私は、アクセストークンと秘密を取得するためにログインするたびにユーザーに尋ねたくはありません。私が理解したところでは、私はそれらを私のアプリケーションに保存する必要があり、データベースまたは SharedPreferences . しかし、私はそのセキュリティ面について少し心配しています。私はあなたがトークンを暗号化し、解読することができると読みましたが、攻撃者があなたのapkとクラスを逆コンパイルし、暗号化キーを取得するのは簡単です。

Androidでこれらのトークンを安全に保存するための最良の方法は何ですか?

どのように解決するのですか?

として保存します。 共有環境設定 . これらはデフォルトでプライベートであり、他のアプリはアクセスできません。root化されたデバイスでは、ユーザーが明示的にアクセスを許可したアプリがそれを読み取ろうとした場合、そのアプリはそれらを使用できるかもしれませんが、それを防ぐことはできません。暗号化については、ユーザーに復号化パスフレーズを毎回入力させるか (したがって、資格情報をキャッシュする目的は達成されません)、キーをファイルに保存する必要がありますが、同じ問題が発生します。

実際のユーザー名パスワードの代わりにトークンを保存することには、いくつかの利点があります。

  • サードパーティのアプリはパスワードを知る必要がなく、ユーザーは元のサイト (Facebook、Twitter、Gmail など) にのみパスワードを送信することを確認できます。
  • トークンを盗まれても、パスワードを見られることはない(ユーザーが他のサイトでも使っている可能性がある)。
  • トークンには一般的に寿命があり、一定期間後に失効する
  • トークンは、漏洩した疑いがある場合、失効させることができます。