Hol fogja tárolni a tokeneket?
sobes.tech MI
Válasz az MI-től
Tokenek, különösen bizalmasak (API-hozzáférés, felhasználói munkamenetek) tárolására az Android alkalmazásban a következő helyeket fogom megfontolni:
-
SharedPreferences (titkosítva vagy az
EncryptedSharedPreferenceshasználatával): Kisebb tokenekhez alkalmas. AzEncryptedSharedPreferences(Biztonsági Könyvtár része) hardveres titkosítást nyújt támogatott eszközökön, növelve a biztonságot a szokásos SharedPreferences-hez képest.// EncryptedSharedPreferences létrehozása 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 ) // Token mentése with(sharedPreferences.edit()) { putString("auth_token", "your_sensitive_token") apply() } // Token olvasása val authToken = sharedPreferences.getString("auth_token", null) -
Android Keystore rendszer: A legbiztonságosabb módszer kriptográfiai kulcsok és érzékeny adatok tárolására. A kulcsok a készülék védett területén tárolódnak, és nem szerezhetők meg az alkalmazáson kívül. A Keystore rendszer használható tokenek titkosítására/dekódolására, amelyek SharedPreferences-ben vagy adatbázisban vannak tárolva.
// Példa kulcs beszerzésére a Keystore-ból (API szint 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 // A secretKey használata token titkosítására/dekódolására -
SQLite adatbázis (titkosított táblák vagy oszlopok): Ha sok token van, vagy más adatokkal kapcsolatosak, helyi adatbázist lehet használni. A biztonság növelése érdekében a tokeneket tartalmazó adatokat titkosított oszlopokban kell tárolni, vagy olyan könyvtárat használni, amely az egész adatbázist titkosítja (pl. SQLCipher for Android).
-- Példa titkosított oszlopot tartalmazó tábla létrehozására (a könyvtár függvénye) CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, auth_token BLOB -- Titkosított token tárolása ); -
Alkalmazás memória (RAM): Csak ideiglenes token tárolására a jelenlegi munkamenet során. A munkamenet vagy az alkalmazás bezárása után a token kinyerhető és biztonságosabban tárolható. Nem alkalmas tartós tárolásra.
A választás függ:
- A token bizalmassága: Mennyire érzékeny a token?
- A token mérete: A kis tokenek könnyebben tárolhatók SharedPreferences-ben vagy Keystore-ban.
- A token élettartama: Szükség van-e a tokenre az alkalmazás bezárása után?
- Android verziók: A Keystore és az
EncryptedSharedPreferencestámogatása változó.
Ajánlás: Kombinálja a Keystore-t a titkosított SharedPreferences-szel vagy titkosított adatbázissal a token tárolására. Ez magas szintű biztonságot nyújt viszonylag egyszerű használat mellett.