Mencegah penyalahgunaan Gemini API dengan Firebase App Check

Saat Anda memanggil API secara langsung dari aplikasi seluler atau web (misalnya, API yang memungkinkan akses ke model AI generatif), API rentan terhadap penyalahgunaan oleh klien yang tidak sah. Untuk membantu melindungi API ini dari penyalahgunaan, Anda dapat menggunakan Firebase App Check untuk memverifikasi bahwa semua panggilan API masuk berasal dari aplikasi Anda yang sebenarnya dan perangkat yang tidak dimodifikasi.

Firebase AI Logic menyediakan gateway proxy yang memungkinkan Anda berintegrasi dengan Firebase App Check dan melindungi API model AI generatif yang dipanggil oleh aplikasi seluler dan web Anda. Penggunaan App Check dengan SDK Firebase AI Logic mendukung semua konfigurasi kami:

  • Melindungi kedua penyedia "Gemini API": Gemini Developer API dan Vertex AI Gemini API.

  • Melindungi semua model yang didukung, baik model Gemini maupun model Imagen.

App Check juga mendukung perlindungan replay, yang berarti token App Check hanya dapat digunakan satu kali.

Ringkasan umum cara kerja App Check

Dengan App Check, perangkat yang menjalankan aplikasi Anda menggunakan penyedia pengesahan aplikasi atau perangkat yang memverifikasi salah satu atau kedua hal berikut:

  • Permintaan berasal dari aplikasi asli milik Anda
  • Permintaan berasal dari perangkat asli yang tidak dimodifikasi

Pengesahan ini dilampirkan pada setiap permintaan yang dibuat aplikasi Anda menggunakan SDK Firebase AI Logic. Saat Anda mengaktifkan penerapan App Check, permintaan dari klien tanpa pengesahan yang valid akan ditolak, begitu juga permintaan yang berasal dari aplikasi atau platform yang belum Anda beri otorisasi.

Saat menyiapkan App Check, pertimbangkan untuk menambahkan perlindungan replay, yang membuat token App Check hanya dapat digunakan satu kali. Opsi ini menawarkan perlindungan yang ditingkatkan di luar perlindungan dasar dan memungkinkan Anda menetapkan tingkat perlindungan yang sesuai untuk aplikasi dan kasus penggunaan Anda.

Anda dapat menemukan informasi mendetail tentang App Check dalam dokumentasinya, termasuk kuota dan batasnya.

Siapkan App Check

Dokumentasi App Check memberikan deskripsi mendetail tentang penyedia pengesahan serta petunjuk penerapan yang mendetail.

  1. Pilih penyedia pengesahan default, dan ikuti petunjuk penerapan di link berikut:

    Perhatikan bahwa jika tidak ada penyedia pengesahan default yang memadai untuk kebutuhan Anda, Anda dapat menerapkan penyedia kustom yang menggunakan penyedia pengesahan pihak ketiga atau teknik pengesahan Anda sendiri.

  2. (Wajib) Aktifkan penerapan App Check sebelum Anda melakukan aplikasi ke sistem kontrol kode sumber yang tersedia secara publik, membagikan aplikasi, atau membuat aplikasi tersedia secara publik.

  3. (Direkomendasikan) Tingkatkan perlindungan dengan menambahkan perlindungan replay, yang berarti token App Check hanya dapat digunakan satu kali.

Meningkatkan perlindungan dengan menambahkan perlindungan dari serangan replay

Sebaiknya gunakan versi SDK terbaru, tetapi pastikan Anda menggunakan minimal salah satu versi berikut untuk menggunakan perlindungan replay:
Platform Apple v12.2.0+ | Android BoM v34.14.0+ (App Check v19.1.0+) | Web v12.14.0+ | Flutter v4.15.0+ (App Check v4.10.0+) | Unity v13.12.0+

Secara default, App Check menggunakan token sesi yang memiliki time to live (TTL) yang dapat dikonfigurasi antara 30 menit dan 7 hari. Token sesi ini di-cache oleh App Check SDK, dikirim bersama dengan permintaan dari aplikasi Anda, dan dapat digunakan kembali hingga TTL-nya berakhir. Penggunaan token sesi dianggap sebagai perlindungan dasar.

Namun, Anda dapat meningkatkan perlindungan di luar perlindungan dasar ini dengan menerapkan perlindungan replay, yang menggunakan token penggunaan terbatas. Jika perlindungan replay diterapkan, hal berikut akan terjadi:

  • App Check akan memblokir permintaan ke Firebase AI Logic yang menggunakan token sesi. Sebagai gantinya, App Check hanya akan mengizinkan permintaan ke Firebase AI Logic jika permintaan tersebut menggunakan token penggunaan terbatas yang baru dibuat.

  • Setelah token penggunaan terbatas diverifikasi, token tersebut akan digunakan sehingga hanya dapat digunakan satu kali, yang mencegah replay secara masif.

  • SDK App Check menghasilkan token penggunaan terbatas baru untuk setiap permintaan. Perhatikan bahwa proses ini dapat memengaruhi permintaan Anda dengan menambahkan beberapa latensi dan terkadang biaya (bergantung pada penyedia pengesahan Anda).

Menyiapkan dan menerapkan perlindungan replay

Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini.

Berikut cara menyiapkan dan menerapkan perlindungan replay:

  1. Jika Anda belum melakukannya, terapkan App Check dan aktifkan penerapan App Check untuk aplikasi Anda.

  2. Aktifkan penggunaan token penggunaan terbatas.

    Di aplikasi Anda selama pembuatan instance, setel parameter useLimitedUseAppCheckTokens ke true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. Terapkan perlindungan replay.

    1. Di codebase aplikasi, pastikan Anda telah mengaktifkan penggunaan token penggunaan terbatas (lihat langkah sebelumnya).

    2. Di konsol Firebase, buka Security > App Check.

    3. Luaskan tampilan metrik untuk Firebase AI Logic.

    4. Pastikan Perlindungan dasar Diterapkan, lalu klik Lanjutkan.

    5. Untuk perlindungan replay, pilih Tidak diterapkan (hanya pemantauan) atau Diterapkan.

      Pertimbangkan hal berikut untuk memutuskan kapan harus menerapkan perlindungan replay:

      • Memantau permintaan Anda direkomendasikan jika sejumlah besar pengguna Anda kemungkinan menggunakan aplikasi versi sebelumnya tanpa mengaktifkan penggunaan token penggunaan terbatas. Jika Anda menerapkan perlindungan pemutaran ulang secara langsung, permintaan dari pengguna tersebut akan diblokir.

      • Anda dapat memantau secara khusus metrik Tidak terverifikasi: Token yang digunakan kembali, yaitu jumlah permintaan yang memiliki token yang telah digunakan dalam permintaan sebelumnya. Pantau metrik ini di konsol Firebase (buka Security > App Check > tab API).

        Jika sebagian besar permintaan terbaru termasuk dalam kategori ini, Anda dapat menghindari gangguan pada pengguna dan mempertimbangkan untuk menunggu hingga lebih banyak pengguna mengupdate ke versi aplikasi Anda yang menggunakan token penggunaan terbatas sebelum menerapkan perlindungan replay.

Memahami cara Firebase AI Logic berintegrasi dengan App Check

Untuk menggunakan SDK Firebase AI Logic, Firebase AI Logic API (firebasevertexai.googleapis.com) harus diaktifkan di project Firebase Anda. Hal ini karena permintaan yang dibuat oleh SDK Firebase AI Logic dikirim terlebih dahulu ke server Firebase AI Logic, yang bertindak sebagai gateway proxy tempat verifikasi Firebase App Check dilakukan sebelum permintaan diizinkan untuk dilanjutkan ke backend penyedia "Gemini API" yang Anda pilih dan API untuk mengakses model Gemini dan Imagen.