Kus te hoiustate tokenid?
sobes.tech AI
Vastus AI-lt
Tokenite, eriti konfidentsiaalsete (API juurdepääs, kasutaja sessioonid) salvestamiseks Androidi rakenduses, kaaluksin järgmisi kohti:
-
SharedPreferences (krüptitud või kasutades
EncryptedSharedPreferences): Sobib väikeste tokenite jaoks.EncryptedSharedPreferences(Security Library osa) pakub riistvaralist krüptimist toetatud seadmetel, suurendades turvalisust võrreldes tavaliste SharedPreferences'iga.// EncryptedSharedPreferences loomine 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 ) // Tokeni salvestamine with(sharedPreferences.edit()) { putString("auth_token", "teie tundlik token") apply() } // Tokeni lugemine val authToken = sharedPreferences.getString("auth_token", null) -
Android Keystore süsteem: Kõige turvalisem viis krüptograafiliste võtmete ja tundlike andmete salvestamiseks. Võtmed salvestatakse seadme kaitstud alale ning neid ei saa rakendusest välja võtta. Keystore süsteemi saab kasutada tokenite krüpteerimiseks/krüpteerimiseks, mis salvestatakse SharedPreferences või andmebaasis.
// Näide võtme saamisest Keystore'ist (API tase 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 // Kasuta secretKey tokeni krüpteerimiseks/krüpteerimiseks -
SQLite andmebaas (krüptitud tabelid või veerud): Kui tokenite arv on suur või need on seotud teiste andmetega, saab kasutada lokaalset andmebaasi. Turvalisuse tagamiseks tuleks tokeni andmed salvestada krüpteeritud veergudes või kasutada teeki, mis võimaldab kogu andmebaasi krüpteerimist (näiteks SQLCipher Android jaoks).
-- Näide, kuidas luua tabel krüpteeritud veeruga (sõltub teegist) CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, auth_token BLOB -- Krüpteeritud tokeni salvestus ); -
Rakenduse mälu (RAM): Ainult ajutiseks tokeni hoidmiseks lühikese aja jooksul selle kasutamise ajal. Pärast sessiooni lõppu või rakenduse sulgemist eemaldatakse token ning see salvestatakse turvalisemalt. Ei sobi püsivaks salvestamiseks.
Valik sõltub:
- Tokeni konfidentsiaalsusest: Kui tundlik on token?
- Tokeni suurusest: Väiksemad tokenid on mugavam salvestada SharedPreferences või Keystore.
- Tokeni eluea ajast: Kas token on vajalik pärast rakenduse sulgemist?
- Androidi versioonidest: Keystore ja
EncryptedSharedPreferencestugi varieerub.
Soovitus: Kombineerida Keystore krüpteerimisvõtme salvestamiseks koos krüpteeritud SharedPreferences või krüpteeritud andmebaasiga tokeni salvestamiseks. See tagab kõrge turvalisuse taseme suhteliselt lihtsa kasutamisega.