Токенҳоро дар куҷо нигоҳ медоред?
sobes.tech AI
Ҷавоб аз AI
Барои нигоҳдории токенҳо, махсусан махфӣ (дастрасӣ ба API, сессияҳои корбар), дар барномаи Android ман ҷойҳои зеринро баррасӣ мекунам:
-
SharedPreferences (шифршуда ё бо истифода аз
EncryptedSharedPreferences): Барои токенҳои хурд мувофиқ аст.EncryptedSharedPreferences(қисми Kitobхонаи Амният) шифркунии сахтафзорро дар дастгоҳҳои дастгиришаванда таъмин мекунад, ки бехатариро нисбат ба SharedPreferences оддӣ зиёд мекунад.// Эҷоди EncryptedSharedPreferences 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 ) // Захира кардани токен with(sharedPreferences.edit()) { putString("auth_token", "your_sensitive_token") apply() } // Хондани токен val authToken = sharedPreferences.getString("auth_token", null) -
Системаи Keystore-и Android: Беҳтарини бехатар барои нигоҳдории клучҳои криптографӣ ва маълумоти ҳассос. Ключҳо дар минтақаи муҳофизатшудаи дастгоҳ нигоҳ дошта мешаванд ва аз барнома берун наметавонанд гирифта шаванд. Системаи Keystore метавонад барои шифркунии/дешифркунии токенҳо, ки дар SharedPreferences ё базаи додаҳо нигоҳ дошта мешаванд, истифода шавад.
// Мисол барои гирифтани клуч аз Keystore (барои сатҳи API 23+) 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 барои шифркунии/дешифркунии токен -
SQLite базаи додаҳо (таблицаву сутунҳои шифршуда): Агар токенҳо бисёр бошанд ё бо маълумоти дигар алоқаманд бошанд, метавон базаи додаҳоро истифода бурд. Барои баланд бардоштани бехатарӣ, маълумоти токенҳо бояд дар сутунҳои шифршуда нигоҳ дошта шаванд ё аз китобхонае истифода шавад, ки шифркунии тамоми базаи додаҳоро таъмин мекунад (масалан, SQLCipher барои Android).
-- Мисол барои эҷоди таблица бо сутуни шифршуда (ба вобастагӣ аз китобхона) CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, auth_token BLOB -- нигоҳдории токени шифршуда ); -
Ҳамонзамон дар хотираи барнома (RAM): Танҳо барои нигоҳдории муваққатии токен дар давоми вақти кӯтоҳ дар сессияи ҳозира. Пас аз анҷоми сессия ё баста шудани барнома, токен гирифта ва бехатартар нигоҳ дошта мешавад. Барои нигоҳдории доимӣ мувофиқ нест.
Интихоб вобаста аст аз:
- Ҳассосияти токен: Токен то чӣ андоза ҳассос аст?
- Андозаи токен: Токенҳои хурдтар барои нигоҳдорӣ дар SharedPreferences ё Keystore қулайтаранд.
- Вақти зиндагии токен: Оё пас аз баста шудани барнома токен лозим аст?
- Нусхаи Android: Дастгирии Keystore ва
EncryptedSharedPreferencesфарқ мекунад.
Тавсия: Keystore-ро барои нигоҳдории клучи шифркунии бо шифршудаи SharedPreferences ё базаи додаҳои шифршудаи барои нигоҳдории худи токен истифода баред. Ин сатҳи баланди бехатариро таъмин мекунад бо истифодаи содда.