Tokenlarni qaerda saqlaysiz?
sobes.tech AI
AIdan javob
Android ilovasında API erişimi, foydalanuvchi sessiyalari kabi maxfiy tokenlarni saqlash uchun quyidagi joylarni ko'rib chiqaman:
-
SharedPreferences (shifrlangan yoki
EncryptedSharedPreferencesbilan): Kichik tokenlar uchun mos.EncryptedSharedPreferences(Xavfsizlik Kutubxonasining bir qismi) qo'llab-quvvatlanadigan qurilmalarda apparat asosidagi shifrlashni ta'minlaydi va oddiy SharedPreferences ga qaraganda xavfsizlikni oshiradi.// EncryptedSharedPreferences yaratish val context: Context = applicationContext val masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC) val sharedPreferences = EncryptedSharedPreferences.create( "secure_preferences", masterKeyAlias, context, EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) // Tokenni saqlash with(sharedPreferences.edit()) { putString("auth_token", "maxfiy_tokeningiz") apply() } // Tokenni o'qish val authToken = sharedPreferences.getString("auth_token", null) -
Android Keystore Tizimi: Kriptografik kalitlar va maxfiy ma'lumotlarni saqlash uchun eng xavfsiz usul. Kalitlar qurilmaning himoyalangan hududida saqlanadi va ilovadan chiqarib bo'lmaydi. Keystore tizimini SharedPreferences yoki ma'lumotlar bazasida saqlangan tokenlarni shifrlash/ochish uchun ishlatish mumkin.
// Keystore'dan kalit olish misoli (API 23+ uchun) val keyStore = KeyStore.getInstance("AndroidKeyStore") keyStore.load(null) val secretKeyEntry = keyStore.getEntry("my_encryption_key_alias", null) as KeyStore.SecretKeyEntry val secretKey = secretKeyEntry.secretKey // secretKey'dan tokenni shifrlash/ochish uchun foydalanish -
SQLite Ma'lumotlar Bazasi (shifrlangan jadvallar yoki ustunlar): Agar ko'p tokenlar bo'lsa yoki ular boshqa ma'lumotlar bilan bog'liq bo'lsa, mahalliy ma'lumotlar bazasidan foydalanish mumkin. Xavfsizlikni oshirish uchun token ma'lumotlarini shifrlangan ustunlarda saqlash yoki butun bazani shifrlashni ta'minlaydigan kutubxonadan foydalanish (masalan, SQLCipher for Android).
-- Shifrlangan ustun bilan jadval yaratish misoli (kutubxonaga bog'liq) CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, auth_token BLOB -- Shifrlangan tokenni saqlash ); -
Ilova xotirasi (RAM): Faqat vaqtinchalik, joriy sessiyada tokenni saqlash uchun. Sessiya tugagach yoki ilovani yopgach, token chiqariladi va xavfsizroq saqlanadi. Doimiy saqlash uchun mos emas.
Tanlov quyidagilarga bog'liq:
- Tokenning maxfiyligi: Token qanchalik maxfiy?
- Tokenning hajmi: Kichik tokenlar SharedPreferences yoki Keystore ga saqlash uchun qulay.
- Tokenning yashash muddati: Ilovani yopgach, token kerakmi?
- Android versiyalari: Keystore va
EncryptedSharedPreferencesqo'llab-quvvatlash farq qiladi.
Tavsiya: Kalitni shifrlash uchun Keystore bilan shifrlangan SharedPreferences yoki shifrlangan ma'lumotlar bazasini birlashtirish. Bu yuqori xavfsizlikni ta'minlaydi va foydalanish osonroq bo'ladi.