ใช้ 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
);

// ...

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

เราขอแนะนำให้ใช้ SDK เวอร์ชันล่าสุด แต่ โปรดตรวจสอบว่าคุณใช้เวอร์ชันใดเวอร์ชันหนึ่งต่อไปนี้เป็นอย่างน้อยเพื่อเปิดใช้ โทเค็นแบบจำกัดการใช้งาน:
แพลตฟอร์ม Apple v12.2.0+ | Android BoM v34.14.0+ (App Check v19.1.0+) | เว็บ v12.14.0+ | Flutter v4.15.0+ (App Check v4.10.0+) | Unity v13.12.0+

โดยค่าเริ่มต้น 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 ใน อนาคต (และคุณเปิดใช้) คุณจะไม่สามารถใช้โทเค็นเซสชันและนำโทเค101}็นแบบจำกัดการใช้งานกลับมาใช้ซ้ำได้ โปรดทราบว่าเวลาในการตอบสนองเพิ่มเติมสำหรับการสร้างโทเค็นใหม่สำหรับคำขอแต่ละรายการจะยังคงเกิดขึ้น

เปิดใช้การใช้โทเค็นแบบจำกัดการใช้งาน

คลิกผู้ให้บริการ 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

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

ทำความเข้าใจวิธีที่ 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