Mencegah penyalahgunaan Gemini API dengan Firebase App Check

Saat Anda memanggil API secara langsung dari aplikasi seluler atau web, API rentan terhadap penyalahgunaan oleh klien yang tidak sah. Jika Anda ingin memanggil Gemini API secara langsung dari aplikasi seluler atau web, Anda harus membantu melindunginya dari penyalahgunaan dengan menggunakan Firebase AI Logic dan menerapkan Firebase App Check. Saat Anda menerapkan App Check, hanya permintaan masuk yang diverifikasi berasal dari aplikasi Anda yang sebenarnya dan/atau perangkat yang tidak dimodifikasi yang akan diizinkan.

Langsung ke petunjuk penyiapan

Firebase AI Logic menyediakan gateway proxy yang memungkinkan Anda berintegrasi dengan Firebase App Check dan melindungi Gemini API saat dipanggil langsung oleh aplikasi seluler dan web Anda. Jika App Check diterapkan untuk Firebase AI Logic, tindakan ini akan membantu melindungi Gemini Developer API dan Agent Platform Gemini API (formerly Vertex AI).

App Check untuk Firebase AI Logic 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. Jika App Check diterapkan, 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 deskripsi penyedia pengesahan serta kuota dan batas yang berlaku.

Siapkan App Check

Petunjuk berikut dioptimalkan untuk menyiapkan Firebase App Check penerapan untuk Firebase AI Logic.

Langkah 1: Terapkan App Check

Mulai awal Juli 2026, selama alur kerja penyiapan terpandu di konsol Firebase, Firebase akan otomatis menerapkan Firebase App Check untuk Firebase AI Logic guna membantu melindungi Gemini API.

Namun, jika Anda telah menyiapkan Firebase AI Logic di project Firebase sebelum awal Juli 2026 (atau App Check tidak diterapkan karena alasan lain), Anda dapat menerapkan App Check sendiri menggunakan petunjuk berikut.

  1. Periksa apakah App Check sudah diterapkan untuk Firebase AI Logic.

    1. Di konsol Firebase, buka tab Security > App Check > APIs.

    2. Cari baris untuk Firebase AI Logic. Jika tertulis Unenforced, lanjutkan dengan petunjuk lainnya.

  2. Klik baris untuk Firebase AI Logic, dan Anda akan melihat grafik metrik. Di bawah grafik tersebut, klik Siapkan.

  3. Di layar pertama dialog (Perlindungan dasar), pilih Diterapkan, lalu klik Lanjutkan.

  4. Di layar berikutnya (Perlindungan replay), pilih Dinonaktifkan, lalu klik Lanjutkan.

  5. Di layar terakhir, tinjau pertimbangan untuk menerapkan App Check guna memastikan bahwa Anda siap menerapkan App Check. Jika sudah siap, klik Lanjutkan.

    Anda tidak perlu mendaftarkan aplikasi jika hanya ingin menerapkan App Check dan hanya menggunakan penyedia debug dengan Firebase AI Logic di aplikasi praproduksi. Namun, saat Anda siap merilis aplikasi kepada pengguna akhir, Anda harus mendaftarkan aplikasi sebagai bagian dari penyiapan penyedia pengesahan produksi (seperti App Attest, Play Integrity, atau reCAPTCHA Enterprise).

Langkah 2: Siapkan penyedia debug untuk pengembangan lokal

Untuk pengembangan lokal, Anda dapat menyiapkan penyedia debug App Check dan tetap menerapkan App Check untuk Firebase AI Logic.

Swift

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi Anda di simulator secara interaktif (misalnya, selama pengembangan lokal):

  1. Di project Xcode, impor FirebaseAppCheck dan lakukan inisialisasi App Check dengan factory penyedia debug sebelum Anda mengonfigurasi Firebase.

    import SwiftUI
    import FirebaseCore
    import FirebaseAppCheck
    
    @main
    struct YourApp: App {
      init() {
        let providerFactory = AppCheckDebugProviderFactory()
        AppCheck.setAppCheckProviderFactory(providerFactory)
        FirebaseApp.configure()
      }
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
    
  2. Dapatkan token debug Anda:

    1. Luncurkan aplikasi di simulator atau di perangkat pengujian Anda.

    2. Buka konsol Xcode dan cari token debug App Check. Contoh:

      <Warning> [AppCheckCore][I-GAC004001] App Check debug token: '123a4567-b89c-12d3-e456-789012345678'.
      
    3. Salin token (misalnya, 123a4567-b89c-12d3-e456-789012345678).

  3. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Untuk mengetahui detail tentang penyedia debug (termasuk cara mendapatkan token debug baru), lihat dokumen App Check resmi.

Kotlin

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi di emulator secara interaktif (misalnya, selama pengembangan lokal):

  1. Pada build debug, konfigurasi App Check untuk menggunakan factory penyedia debug:

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )
  2. Dapatkan token debug Anda:

    1. Jalankan aplikasi Anda di emulator atau di perangkat pengujian Anda.

    2. Cari token debug App Check di log Anda. Contoh:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Salin token (misalnya, 123a4567-b89c-12d3-e456-789012345678).

  3. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Untuk mengetahui detail tentang penyedia debug (termasuk cara mendapatkan token debug baru), lihat dokumen App Check resmi.

Java

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi di emulator secara interaktif (misalnya, selama pengembangan lokal):

  1. Pada build debug, konfigurasi App Check untuk menggunakan factory penyedia debug:

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  2. Dapatkan token debug Anda:

    1. Jalankan aplikasi Anda di emulator atau di perangkat pengujian Anda.

    2. Cari token debug App Check di log Anda. Contoh:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Salin token (misalnya, 123a4567-b89c-12d3-e456-789012345678).

  3. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Untuk mengetahui detail tentang penyedia debug (termasuk cara mendapatkan token debug baru), lihat dokumen App Check resmi.

Web

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi Anda dari localhost secara interaktif (misalnya, selama pengembangan lokal):

  1. Dalam build debug, aktifkan mode debug dengan menetapkan self.FIREBASE_APPCHECK_DEBUG_TOKEN ke true sebelum Anda melakukan inisialisasi App Check. Contoh:

    self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
    initializeAppCheck(app, { /* App Check options */ });
    
  2. Buka aplikasi web Anda secara lokal, lalu buka alat developer browser. Di konsol debug, Anda akan melihat token debug:

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    
  3. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Untuk mengetahui detail tentang penyedia debug (termasuk cara mendapatkan token debug baru), lihat dokumen App Check resmi.

Dart

iOS+

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi Anda di simulator secara interaktif (misalnya, selama pengembangan lokal):

  1. Aktifkan App Check dengan penyedia debug tepat setelah Anda menginisialisasi aplikasi Firebase:

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    // Import the firebase_app_check plugin
    import 'package:firebase_app_check/firebase_app_check.dart';
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      await FirebaseAppCheck.instance.activate(
        // Set appleProvider to `AppleProvider.debug`
        appleProvider: AppleProvider.debug,
      );
      runApp(App());
    }
    
  2. Aktifkan logging debug dalam project Xcode Anda:

    1. Buka Product > Scheme > Edit scheme.
    2. Pilih Run dari menu kiri, lalu pilih tab Arguments.
    3. Di bagian Arguments Passed on Launch, tambahkan -FIRDebugEnabled.
  3. Dapatkan token debug Anda:

    1. Buka ios/Runner.xcworkspace dengan Xcode dan jalankan aplikasi Anda di simulator atau di perangkat pengujian.

    2. Buka konsol Xcode dan cari token debug App Check. Contoh:

      <Warning> [AppCheckCore][I-GAC004001] App Check debug token: '123a4567-b89c-12d3-e456-789012345678'.
      
    3. Salin token (misalnya, 123a4567-b89c-12d3-e456-789012345678).

  4. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Android

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi di emulator secara interaktif (misalnya, selama pengembangan lokal):

  1. Aktifkan App Check dengan penyedia debug tepat setelah Anda menginisialisasi aplikasi Firebase:

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    // Import the firebase_app_check plugin
    import 'package:firebase_app_check/firebase_app_check.dart';
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      await FirebaseAppCheck.instance.activate(
        // Set androidProvider to `AndroidProvider.debug`
        androidProvider: AndroidProvider.debug,
      );
      runApp(App());
    }
    
  2. Dapatkan token debug Anda:

    1. Jalankan aplikasi Anda di emulator atau di perangkat pengujian Anda.

    2. Cari token debug App Check di log Anda. Contoh:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Salin token (misalnya, 123a4567-b89c-12d3-e456-789012345678).

  3. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Web

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi Anda dari localhost secara interaktif (misalnya, selama pengembangan lokal):

  1. Dalam file web/index.html, aktifkan mode debug dengan menetapkan self.FIREBASE_APPCHECK_DEBUG_TOKEN ke true:

    <body>
      <script>
        self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
      </script>
    
      ...
    
    </body>
    
  2. Jalankan aplikasi web Anda secara lokal, lalu buka alat developer browser. Di konsol debug, Anda akan melihat token debug:

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    

    Token ini disimpan secara lokal di browser dan akan digunakan setiap kali Anda menggunakan aplikasi di browser yang sama pada mesin yang sama. Jika Anda ingin menggunakan token di browser lain atau di mesin lain, tetapkan self.FIREBASE_APPCHECK_DEBUG_TOKEN ke string token, bukan true.

  3. Daftarkan token debug Anda dengan App Check:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk mendaftarkan token debug Anda.

Untuk mengetahui detail tentang penyedia debug (termasuk cara mendapatkan token debug baru), lihat dokumen App Check resmi.

Unity

Berikut cara menggunakan penyedia debug saat menjalankan aplikasi di emulator secara interaktif (misalnya, selama pengembangan lokal):

  1. Di konsol Firebase, buat token debug:

    1. Di konsol Firebase, buka Security > App Check > tab Aplikasi.

    2. Temukan aplikasi Anda, klik menu tambahan (), lalu pilih Kelola token debug.

    3. Ikuti petunjuk di layar untuk membuat token debug baru.

  2. Dalam kode inisialisasi aplikasi Anda, tambahkan kode berikut:

    using Firebase.AppCheck;
    
    void InitializeFirebase() {
      // Configure the Debug Provider factory with your debug token.
      DebugAppCheckProviderFactory.Instance.SetDebugToken("YOUR_DEBUG_TOKEN");
    
      // Set App Check to use the debug provider factory
      FirebaseAppCheck.SetAppCheckProviderFactory(
        DebugAppCheckProviderFactory.Instance);
    
      // Proceed to initialize Firebase as normal
    }
    

Untuk mengetahui detail tentang penyedia debug (termasuk cara mendapatkan token debug baru), lihat dokumen App Check resmi.

Langkah 3: Siapkan App Check untuk pengguna akhir dan produksi

Jika Anda siap merilis aplikasi kepada pengguna akhir, Anda harus mendaftarkan aplikasi dan menyiapkan penyedia pengesahan produksi (seperti App Attest, Play Integrity, atau reCAPTCHA Enterprise).

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

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

  2. (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, siapkan App Check dengan mengikuti petunjuk sebelumnya di halaman ini.

  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 replay secara langsung, permintaan dari pengguna tersebut akan diblokir.

      • Anda dapat memantau secara khusus metrik Tidak terverifikasi: Token yang digunakan ulang, 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.

FAQ dan pemecahan masalah

Temukan FAQ dan pemecahan masalah tambahan atau kode error terkait Firebase AI Logic.