Saya ingin tahu tentang keamanan preferensi bersama.
Apakah mungkin untuk mendapatkan akses ke sharedpreferences, meskipun mereka dibuat di MODE_PRIV (0)?
Apakah mungkin untuk membuat daftar semua sharedpreferences yang tersedia dan kemudian mengambil semua pengaturan dari aplikasi lain?
Apakah sharedpreferences merupakan tempat yang baik untuk meletakkan data sensitif, seperti sandi atau token autentikasi?
Terima kasih
android
security
sharedpreferences
Marek Sebera
sumber
sumber
Jawaban:
Preferensi Bersama disimpan sebagai file dalam sistem file pada perangkat. Mereka, secara default, disimpan dalam direktori data aplikasi dengan izin sistem file yang disetel yang hanya mengizinkan UID yang dijalankan aplikasi tertentu untuk mengaksesnya. Jadi, mereka bersifat pribadi karena izin file Linux membatasi aksesnya, sama seperti pada sistem Linux / Unix apa pun.
Siapapun yang memiliki akses level root ke perangkat akan dapat melihatnya, karena root memiliki akses ke semua yang ada di sistem file. Selain itu, aplikasi apa pun yang berjalan dengan UID yang sama dengan aplikasi yang membuat akan dapat mengaksesnya (ini biasanya tidak dilakukan dan Anda perlu mengambil tindakan khusus untuk membuat dua aplikasi berjalan dengan UID yang sama, jadi ini mungkin bukan masalah besar. perhatian). Terakhir, jika seseorang dapat memasang sistem file perangkat Anda tanpa menggunakan OS Android yang diinstal, mereka juga dapat melewati izin yang membatasi akses.
Jika Anda khawatir tentang akses tersebut ke preferensi Anda (atau data apa pun yang ditulis oleh aplikasi Anda), maka Anda akan ingin mengenkripsinya. Jika Anda begitu mengkhawatirkan mereka, Anda perlu mencari tahu dengan tepat berapa banyak perlindungan yang diperlukan untuk tingkat risiko yang Anda lihat. Ada diskusi yang sangat ekstensif tentang hal ini di Keamanan Aplikasi untuk Platform Android , yang baru saja diterbitkan pada bulan Desember 2011 (penafian: Saya penulis buku ini).
sumber
SharedPreferences tidak lain adalah file XML di ponsel / data / data / folder Anda, Jadi aplikasi atau pengguna apa pun dengan hak superuser di perangkat yang di-rooting dapat mengakses SharedPreferences Anda, bahkan jika dibuat dengan MODE_PRIV
Masih ada cara untuk melindunginya dari semua orang ... Silakan lihat tautan ini. Di sini Anda dapat menyimpan data di pref dengan enkripsi, kelasnya cukup jelas dan sangat mudah digunakan.
https://github.com/sveinungkb/encrypted-userprefs
Seperti yang dikatakan oleh orang lain siapa pun dapat mengaksesnya tetapi dalam hal ini tidak ada yang dapat membaca data di dalamnya karena dienkripsi. Jadi secure.For yang Utmost keamanan saran saya akan untuk menghasilkan kunci yang digunakan untuk enkripsi pada saat dijalankan daripada keras coding itu. Ada banyak cara untuk melakukan itu :)
sumber
SharedPref
. Tapi kemudian, apa yang harus dilakukan dengan kunci lainnya? Serius, skenario terbaik akan mengirimkan kunci terenkripsi dan perangkat UID ke server menggunakan SSL untuk disimpan di sana dan diambil sesuai kebutuhan. Itu akan membutuhkan konektivitas, tetapi akan memungkinkan Anda memasukkan perangkat ke daftar hitam dan tiba-tiba semua data dibuang ke sampah. Tanpa koneksi internet yang konstan, setiap percobaan untuk mengenkripsi data tidak 100% aman.Biasanya, tidak, mereka tidak dapat diakses oleh aplikasi lain, namun, Anda harus mencatat bahwa SharedPreferences disimpan sebagai file XML di
/data/data/
direktori, yang pada dasarnya berarti bahwa aplikasi apa pun dengan hak superuser pada perangkat yang di- root dapat mengakses AndaSharedPreference
, bahkan jika mereka dibuat denganMODE_PRIV
sumber
Apakah mungkin untuk mendapatkan akses ke sharedpreferences, meskipun mereka dibuat di MODE_PRIV (0)?
Berdasarkan kode Tidak. Tetapi Anda dapat mengambil file aplikasi jika Anda memiliki hak istimewa pengguna super.
Apakah mungkin untuk membuat daftar semua sharedpreferences yang tersedia dan kemudian mengambil semua pengaturan dari aplikasi lain?
Jika Anda adalah pengguna super (perangkat yang di-rooting) maka Anda dapat menarik semua file pribadi dari aplikasi.
Apakah sharedpreferences merupakan tempat yang baik untuk meletakkan data sensitif, seperti sandi atau token autentikasi?
Tidak. Ini dapat dengan mudah diretas. Jika Anda ingin meletakkan data sensitif apa pun di file prefrence bersama, Anda dapat mengenkripsi data dan menyimpannya. Anda dapat menyimpan kunci enkripsi Anda di NDK / server.
sumber