Jika saya ingin menyimpan nama pengguna dan kata sandi untuk digunakan di dalam aplikasi Android, apa cara terbaik untuk melakukannya? Apakah itu melalui layar preferensi (tetapi bagaimana jika pengguna melewatkan ini?), Atau memunculkan kotak dialog dan meminta kredensial? Jika demikian, saya harus mempertahankan status untuk aplikasi. Bagaimana saya melakukan ini?
android
authentication
storage
credentials
Legenda
sumber
sumber
Jawaban:
Sebagian besar aplikasi Android dan iPhone yang saya lihat menggunakan layar awal atau kotak dialog untuk meminta kredensial. Saya pikir itu merepotkan bagi pengguna untuk harus sering memasukkan kembali nama / kata sandi mereka, jadi menyimpan info itu masuk akal dari perspektif kegunaan.
Saran dari ( panduan pengembang Android ) adalah:
Menggunakan AccountManger adalah opsi terbaik untuk menyimpan kredensial. The SampleSyncAdapter memberikan contoh bagaimana menggunakannya.
Jika ini bukan opsi bagi Anda karena alasan tertentu, Anda dapat kembali ke kredensial yang ada menggunakan mekanisme Preferensi . Aplikasi lain tidak akan dapat mengakses preferensi Anda, sehingga informasi pengguna tidak mudah terekspos.
sumber
AccountManager
(sesuai jawaban saya, dan @ Miguel secara tidak langsung) dan seseorang memegang telepon GSM Anda, mereka harus tetap menggunakan SIM Anda untuk memiliki akses ke akun Anda, karena itu akan membatalkan kredensial yang disimpan. saat SIM berubah.Anda harus menggunakan Manajer Akun Android . Ini dibuat khusus untuk skenario ini. Ini sedikit rumit tetapi salah satu hal yang dilakukannya adalah membatalkan kredensial lokal jika kartu SIM berubah, jadi jika seseorang menggesek ponsel Anda dan melempar SIM baru ke dalamnya, kredensial Anda tidak akan terganggu.
Ini juga memberi pengguna cara cepat dan mudah untuk mengakses (dan berpotensi menghapus) kredensial yang disimpan untuk akun apa pun yang mereka miliki di perangkat, semuanya dari satu tempat.
SampleSyncAdapter (seperti @Miguel disebutkan) adalah contoh yang memanfaatkan kredensial akun yang disimpan.
sumber
Saya pikir cara terbaik untuk mengamankan kredensial Anda adalah dengan pertama-tama berpikir untuk menyimpan kata sandi dengan enkripsi dalam file account.db yang tidak dapat dengan mudah tersedia di perangkat yang tidak di-rooting dan jika perangkat yang di-rooting, peretas harus memerlukan kunci untuk mendekripsi. Itu.
Opsi lainnya adalah lakukan semua otentikasi Anda seperti yang dilakukan Gmail. setelah otentikasi pertama dengan server Gmail. Anda mendapat Token Auth yang akan digunakan jika kata sandi Anda. token itu akan disimpan dalam teks biasa. token ini bisa salah jika Anda mengubah kata sandi dari Server.
opsi terakhir saya sarankan Anda untuk mengaktifkan Otentikasi 2-Faktor & membuat Kata Sandi Khusus Perangkat untuk perangkat Anda. Setelah kehilangan perangkat, yang Anda butuhkan adalah menonaktifkan perangkat itu.
sumber
Lihatlah Apa cara yang paling tepat untuk menyimpan pengaturan pengguna di aplikasi Android jika Anda khawatir tentang menyimpan kata sandi sebagai teks yang jelas di SharedPreferences.
sumber
Anda juga dapat melihat contoh SampleSyncAdapter dari SDK. Ini dapat membantu Anda.
sumber
Lihatlah posting ini dari pengembang-android, yang mungkin membantu meningkatkan keamanan pada data yang tersimpan di aplikasi Android Anda.
Menggunakan Kriptografi untuk Menyimpan Kredensial dengan Aman
sumber
Dengan perangkat keras dan API sidik jari (Android 6.0) baru Anda dapat melakukannya seperti pada aplikasi contoh github ini .
sumber
Ini diberi peringkat berdasarkan tingkat kesulitan untuk memecah informasi tersembunyi Anda .
Simpan di cleartext
Toko dienkripsi menggunakan kunci simetris
Menggunakan Android Keystore
Simpan dienkripsi menggunakan kunci asimetris
sumber: Di mana tempat terbaik untuk menyimpan kata sandi di aplikasi Android Anda
sumber: Sederhana menggunakan Android Keystore untuk menyimpan kata sandi dan informasi sensitif lainnya
sumber
Info di http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html adalah pendekatan berbasis yang cukup pragmatis, tetapi "menggunakan-hidden-android-apis". Ini sesuatu yang perlu dipertimbangkan ketika Anda benar-benar tidak bisa menyimpan kredensial / kata sandi secara lokal di perangkat.
Saya juga telah membuat inti gagasan itu di https://gist.github.com/kbsriram/5503519 yang mungkin bermanfaat.
sumber