Bagikan melalui


Mengamankan penyimpanan

Browse sample. Telusuri sampel

Artikel ini menjelaskan cara menggunakan antarmuka .NET Multi-platform App UI (.NET MAUI). ISecureStorage Antarmuka ini membantu menyimpan pasangan kunci/nilai sederhana dengan aman.

Implementasi ISecureStorage default antarmuka tersedia melalui SecureStorage.Default properti . ISecureStorage Antarmuka dan SecureStorage kelas terkandung dalam Microsoft.Maui.Storage namespace layanan.

Mulai

Untuk mengakses SecureStorage fungsionalitas, penyiapan khusus platform berikut diperlukan:

Pencadangan Otomatis untuk Aplikasi adalah fitur Android 6.0 (API level 23) dan yang lebih baru yang mencadangkan data aplikasi pengguna (preferensi bersama, file di penyimpanan internal aplikasi, dan file spesifik lainnya). Data dipulihkan saat aplikasi diinstal ulang atau diinstal pada perangkat baru. Ini dapat memengaruhi SecureStorage, yang menggunakan preferensi berbagi yang dicadangkan dan tidak dapat didekripsi saat pemulihan terjadi. .NET MAUI secara otomatis menangani kasus ini dengan menghapus kunci sehingga dapat diatur ulang. Atau, Anda dapat menonaktifkan Pencadangan Otomatis.

Mengaktifkan atau menonaktifkan pencadangan

Anda dapat memilih untuk menonaktifkan Pencadangan Otomatis untuk seluruh aplikasi Anda dengan mengatur android:allowBackup ke false di file AndroidManifest.xml . Pendekatan ini hanya disarankan jika Anda berencana memulihkan data dengan cara lain.

<manifest ... >
    ...
    <application android:allowBackup="false" ... >
        ...
    </application>
</manifest>

Pencadangan selektif

Pencadangan Otomatis dapat dikonfigurasi untuk menonaktifkan konten tertentu dari pencadangan. Anda dapat membuat seperangkat aturan kustom untuk mengecualikan SecureStore item agar tidak dicadangkan.

  1. Atur android:fullBackupContent atribut di AndroidManifest.xml Anda:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. Buat file XML baru bernama auto_backup_rules.xml di direktori Platforms/Android/Resources/xml dengan tindakan build AndroidResource. Atur konten berikut yang menyertakan semua preferensi bersama kecuali untuk SecureStorage:

    <?xml version="1.0" encoding="utf-8"?>
    <full-backup-content>
        <include domain="sharedpref" path="."/>
        <exclude domain="sharedpref" path="${applicationId}.microsoft.maui.essentials.preferences.xml"/>
    </full-backup-content>
    

Menggunakan penyimpanan aman

Contoh kode berikut menunjukkan cara menggunakan penyimpanan aman.

Tip

Ada kemungkinan bahwa pengecualian dilemparkan saat memanggil GetAsync atau SetAsync. Ini dapat disebabkan oleh perangkat yang tidak mendukung penyimpanan aman, kunci enkripsi yang berubah, atau kerusakan data. yang terbaik adalah menangani ini dengan menghapus dan menambahkan pengaturan kembali jika memungkinkan.

Menulis nilai

Untuk menyimpan nilai untuk kunci tertentu dalam penyimpanan aman:

await SecureStorage.Default.SetAsync("oauth_token", "secret-oauth-token-value");

Membaca nilai

Untuk mengambil nilai dari penyimpanan aman:

string oauthToken = await SecureStorage.Default.GetAsync("oauth_token");

if (oauthToken == null)
{
    // No value is associated with the key "oauth_token"
}

Tip

Jika tidak ada nilai yang terkait dengan kunci, GetAsync mengembalikan null.

Menghapus nilai

Untuk menghapus nilai tertentu, hapus kunci:

bool success = SecureStorage.Default.Remove("oauth_token");

Untuk menghapus semua nilai, gunakan RemoveAll metode :

SecureStorage.Default.RemoveAll();

Perbedaan platform

Bagian ini menjelaskan perbedaan khusus platform dengan API penyimpanan yang aman.

SecureStoragemenggunakan API Preferensi dan mengikuti persistensi data yang sama yang diuraikan dalam dokumentasi Preferensi, dengan nama file [YOUR-APP-PACKAGE-ID].microsoft.maui.essentials.preferences. Namun, data dienkripsi dengan kelas Android EncryptedSharedPreferences , dari pustaka Android Security, yang membungkus SharedPreferences kelas dan secara otomatis mengenkripsi kunci dan nilai menggunakan pendekatan dua skema:

  • Kunci dienkripsi secara deterministik, sehingga kunci dapat dienkripsi dan dicari dengan benar.
  • Nilai dienkripsi secara non-deterministik menggunakan AES-256 GCM.

Untuk informasi selengkapnya tentang pustaka Android Security, lihat Bekerja dengan data dengan lebih aman di developer.android.com.

Batasan

Performa dapat terpengaruh jika Anda menyimpan teks dalam jumlah besar, karena API dirancang untuk menyimpan teks dalam jumlah kecil.