ใช้ Firebase App Check เพื่อปกป้อง API จากไคลเอ็นต์ที่ไม่ได้รับอนุญาต

เมื่อคุณเรียกใช้ API จากแอปบนอุปกรณ์เคลื่อนที่หรือเว็บแอปโดยตรง (เช่น API ที่อนุญาตให้เข้าถึงโมเดล Generative AI) API จะเสี่ยงต่อการถูกไคลเอ็นต์ที่ไม่ได้รับอนุญาตนำไปใช้ในทางที่ผิด คุณสามารถใช้ Firebase App Check เพื่อยืนยันว่าการเรียกใช้ API ขาเข้าทั้งหมด มาจากแอปจริงของคุณ เพื่อช่วยปกป้อง API เหล่านี้

Firebase AI Logic มีเกตเวย์พร็อกซีที่ช่วยให้คุณผสานรวมกับ Firebase App Check และปกป้อง API ของโมเดล Generative AI ที่ แอปบนอุปกรณ์เคลื่อนที่และเว็บแอปของคุณเรียกใช้ การใช้ App Check กับ Firebase AI Logic SDK รองรับการกำหนดค่าทั้งหมดของเรา ดังนี้

  • ปกป้องผู้ให้บริการ "Gemini API" ทั้ง 2 ราย ได้แก่ Gemini Developer API และ Vertex AI Gemini API

  • ปกป้องโมเดลที่รองรับทั้งหมด ทั้ง Gemini โมเดล และ Imagen โมเดล

สรุปภาพรวมเกี่ยวกับวิธีการทำงานของ App Check

เมื่อใช้ App Check อุปกรณ์ที่เรียกใช้แอปของคุณจะใช้ผู้ให้บริการการรับรองความถูกต้องของแอปหรืออุปกรณ์ เพื่อยืนยันสิ่งใดสิ่งหนึ่งหรือทั้ง 2 อย่างต่อไปนี้

  • คำขอมาจากแอปของแท้
  • คำขอมาจากอุปกรณ์ของแท้ที่ไม่มีการดัดแปลง

การรับรองความถูกต้องนี้จะแนบไปกับทุกคำขอที่แอปของคุณส่งโดยใช้ Firebase AI Logic SDK เมื่อคุณเปิดใช้ App Check การบังคับใช้ ระบบจะปฏิเสธคำขอจากไคลเอ็นต์ที่ไม่มีการรับรองความถูกต้องที่ถูกต้อง รวมถึงคำขอใดก็ตามที่มาจากแอปหรือแพลตฟอร์มที่คุณไม่ได้ให้สิทธิ์

เราขอแนะนำให้คุณเตรียมพร้อมสำหรับการปกป้องที่ดียิ่งขึ้น (หรือที่เรียกว่า การปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay)) เมื่อตั้งค่า App Check ตรวจสอบให้แน่ใจว่าได้

คุณดูข้อมูลโดยละเอียดเกี่ยวกับ App Check ได้ใน เอกสารประกอบ ซึ่งรวมถึง โควต้าและขีดจำกัด

ผู้ให้บริการที่พร้อมใช้งานและวิธีการติดตั้งใช้งาน

เอกสารประกอบของ App Check อธิบายเกี่ยวกับผู้ให้บริการการรับรองความถูกต้อง รวมถึงวิธีการติดตั้งใช้งาน

  1. เลือกผู้ให้บริการเริ่มต้นและทำตามวิธีการติดตั้งใช้งานที่ลิงก์ต่อไปนี้

    โปรดทราบว่าหากผู้ให้บริการเริ่มต้นไม่เพียงพอต่อความต้องการของคุณ คุณสามารถติดตั้งใช้งานผู้ให้บริการที่กำหนดเอง ซึ่งใช้ผู้ให้บริการการรับรองความถูกต้องของบุคคลที่สามหรือเทคนิคการรับรองความถูกต้องของคุณเอง

  2. (แนะนำ) เตรียมพร้อมสำหรับการปกป้องที่ดียิ่งขึ้นจาก App Check (หรือที่เรียกว่า การปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay))

  3. (ต้องดำเนินการ) ก่อนเผยแพร่แอปให้ผู้ใช้จริง เปิดใช้การบังคับใช้ App Check

ต้องมีการสร้างอินสแตนซ์พิเศษสำหรับ Flutter

คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาเฉพาะของผู้ให้บริการ และโค้ดในหน้านี้

เมื่อใช้ App Check กับ Firebase AI Logic ในแอป Flutter คุณต้อง ส่ง App Check อย่างชัดเจนระหว่างการสร้างอินสแตนซ์ ดังนี้

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

เตรียมพร้อมสำหรับการปกป้องที่ดียิ่งขึ้น

ระบบรองรับการเปิดใช้โทเค็นแบบใช้ครั้งเดียวสำหรับ แพลตฟอร์ม Apple (เวอร์ชัน 12.2.0 ขึ้นไป), Android (เวอร์ชัน 17.2.0 ขึ้นไป, BoM เวอร์ชัน 34.2.0 ขึ้นไป), เว็บ (เวอร์ชัน 12.3.0 ขึ้นไป) และ Flutter (เวอร์ชัน 3.2.0 ขึ้นไป, BoM เวอร์ชัน 4.2.0 ขึ้นไป) การรองรับ Unity จะพร้อมให้บริการเร็วๆ นี้

โดยค่าเริ่มต้น App Check จะใช้ โทเค็นเซสชัน ซึ่งมี Time To Live (TTL) ที่กำหนดค่าได้ระหว่าง 30 นาที ถึง 7 วัน SDK จะแคชโทเค็นเซสชันเหล่านี้และส่งไปพร้อมกับ คำขอจากแอปApp Check

ในอนาคต App Check จะเพิ่มตัวเลือกในการเปิดใช้ การปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay) สำหรับ Firebase AI Logic (คล้ายกับการรองรับที่ App Check มีให้สำหรับแหล่งข้อมูลอื่นๆ อยู่แล้ว) เมื่อเปิดใช้การปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay) ระบบจะเพิ่มการปกป้องในลักษณะต่อไปนี้

  • App Check จะอนุญาตคำขอเฉพาะในกรณีที่คำขอนั้นมาพร้อมกับโทเค็นพิเศษประเภทหนึ่งที่เรียกว่า โทเค็นแบบใช้ครั้งเดียว

  • หลังจากยืนยันโทเค็นแบบใช้ครั้งเดียวแล้ว ระบบจะใช้โทเค็นนั้นเพื่อให้ใช้ได้เพียงครั้งเดียว ซึ่งจะช่วยป้องกันการโจมตีแบบใช้โทเค็นซ้ำ (Replay)

เราขอแนะนำให้คุณ เปิดใช้โทเค็นแบบใช้ครั้งเดียว ซึ่งเป็นส่วนหนึ่ง ของการตั้งค่า App Check เพื่อเตรียมพร้อมสำหรับการปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay) เมื่อการปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay) พร้อมให้บริการ คุณจะเปิดใช้ได้เร็วขึ้นเนื่องจากผู้ใช้จำนวนมากขึ้นจะใช้แอปเวอร์ชันที่ส่งโทเค็นแบบใช้ครั้งเดียว

โปรดทราบสิ่งต่อไปนี้หากคุณเปิดใช้โทเค็นแบบใช้ครั้งเดียวในแอปตอนนี้ (ขณะที่การปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay) ยังไม่พร้อมให้บริการ)

  • App Check App Check ไม่ บล็อกการใช้ โทเค็นเซสชันที่ถูกต้อง

  • App Check SDK จะแคชโทเค็นแบบใช้ครั้งเดียวและส่งไปพร้อมกับคำขอเช่นเดียวกับโทเค็นเซสชันApp Check โทเค็นแบบใช้ครั้งเดียวเหล่านี้ ให้การปกป้องเพิ่มเติม เล็กน้อย กว่าโทเค็นเซสชันเริ่มต้น เนื่องจากโทเค็นแบบใช้ครั้งเดียวมี TTL สั้นกว่า (เพียง 5 นาที และปรับไม่ได้) เมื่อเทียบกับโทเค็นเซสชัน

  • แม้ว่าโทเค็นแบบใช้ครั้งเดียวจะมีอายุการใช้งาน 5 นาที แต่ SDK จะยังคงสร้างโทเค็นใหม่สำหรับคำขอ แต่ละ รายการ กระบวนการนี้อาจเพิ่มเวลาในการตอบสนองให้กับคำขอ

อย่างไรก็ตาม เมื่อการปกป้องการโจมตีแบบใช้โทเค็นซ้ำ (Replay) พร้อมให้บริการสำหรับ Firebase AI Logic ใน อนาคต (และคุณเปิดใช้) คุณจะไม่สามารถใช้โทเค็นเซสชันและนำโทเค็นแบบใช้ครั้งเดียวกลับมาใช้ซ้ำได้ โปรดทราบว่าเวลาในการตอบสนองเพิ่มเติมสำหรับการสร้างโทเค็นใหม่สำหรับคำขอแต่ละรายการจะยังคงเกิดขึ้น

เปิดใช้โทเค็นแบบใช้ครั้งเดียว

คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาเฉพาะของผู้ให้บริการ และโค้ดในหน้านี้

วิธีเปิดใช้โทเค็นแบบใช้ครั้งเดียวมีดังนี้

  1. ติดตั้งใช้งาน App Check และตรวจสอบว่าคุณได้ เปิดใช้การบังคับใช้App Check สำหรับแอปแล้ว

  2. ในแอประหว่างการสร้างอินสแตนซ์ ให้เปิดใช้โทเค็นแบบใช้ครั้งเดียวโดยตั้งค่าพารามิเตอร์ useLimitedUseAppCheckTokens เป็น 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(
      appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    ระบบจะรองรับการใช้โทเค็นแบบใช้ครั้งเดียวกับเกม Unity ในรุ่นที่จะเปิดตัวในอนาคต โปรดกลับมาใหม่หลังจากนี้

ทำความเข้าใจวิธีที่ Firebase AI Logic ผสานรวมกับ App Check

หากต้องการใช้ Firebase AI Logic SDK คุณต้องเปิดใช้ Firebase AI Logic API (firebasevertexai.googleapis.com) ในโปรเจ็กต์ Firebase เนื่องจากระบบจะส่งคำขอที่ Firebase AI Logic SDK ส่งไปยังFirebase AI Logic เซิร์ฟเวอร์ก่อน ซึ่งทำหน้าที่เป็นเกตเวย์พร็อกซีที่การยืนยันFirebase App Check เกิดขึ้น ก่อน ที่คำขอจะได้รับอนุญาตให้ไปยังแบ็กเอนด์ของผู้ให้บริการ "Gemini API" ที่คุณเลือกและ API เพื่อเข้าถึงโมเดลGemini และImagen