Որտե՞ղ եք պահելու տոքենները։
sobes.tech AI
Պատասխան AI-ից
Տոկենների պահպանումը, հատկապես գաղտնի (API մուտք, օգտվողի սեսիաներ), Android հավելվածում ես դիտարկում հետևյալ վայրերը:
-
SharedPreferences (կոդավորված կամ օգտագործելով
EncryptedSharedPreferences): Համապատասխան է փոքր տոքենների համար:EncryptedSharedPreferences(անվտանգության գրադարանի մաս) ապահովում է հագեցած կոդավորումը աջակցվող սարքերում, բարձրացնելով անվտանգության մակարդակը սովորական 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) -
Android Keystore համակարգը: Ամենաբարձր անվտանգությունը ապահովող միջոցը կոդավորական բանալիների և զգայուն տվյալների պահպանում: Բանալիները պահվում են սարքի պաշտպանված տարածքում և չեն կարող դուրս բերվել հավելվածից: 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 for Android):
-- Օրինակ կոդավորող սյունակով աղյուսակի ստեղծում (կախված գրադարանից) CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, auth_token BLOB -- Կոդավորված տոքենի պահպանում ); -
Հավելվածի հիշողություն (RAM): Միայն ժամանակավոր պահեստավորում է տոքենը ընթացիկ սեսիայի ընթացքում: Սեսիայի ավարտից կամ հավելվածի փակվելուց հետո, տոքենը դուրս է բերվում և պահվում ավելի անվտանգ: Չի հարմարեցված մշտական պահեստավորման համար:
Ընտրությունը կախված է:
- Տոքենի գաղտնիությունից: Որքան է զգայուն տոքենը:
- Տոքենի չափից: Փոքր տոքենները ավելի հարմար են SharedPreferences կամ Keystore-ում պահելու համար:
- Տոքենի կյանքի տևողությունից: Պետք է արդյոք տոքենը մնա հավելվածի փակվելուց հետո:
- Android տարբերակներից: Keystore և
EncryptedSharedPreferencesաջակցությունը տարբեր է:
Առաջարկ: Համատեղեք Keystore-ը կոդավորման բանալի պահելու համար, որը կկոդավորի SharedPreferences-ը կամ ամբողջ տվյալների բազան, որպեսզի պահեք ինքն տոքենը: Դա ապահովում է բարձր մակարդակի անվտանգություն՝ բավականին պարզ օգտագործմամբ։