ใช้ 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 กับ SDK Firebase AI Logic รองรับการกำหนดค่าทั้งหมดของเรา

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

  • ปกป้องทุกรุ่นที่รองรับ ทั้งรุ่น Gemini และรุ่น Imagen

ข้อมูลสรุปในระดับสูงเกี่ยวกับวิธีการทำงานของ App Check

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

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

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

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

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

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

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

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

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

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

  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 ขึ้นไป) | Web v12.14.0 ขึ้นไป | Flutter v4.15.0 ขึ้นไป (App Check v4.10.0 ขึ้นไป) | Unity v13.12.0 ขึ้นไป

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

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

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

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

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

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

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

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

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

อย่างไรก็ตาม เมื่อการป้องกันการเล่นซ้ำพร้อมใช้งานสำหรับ 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

    // ...
    
    // 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 เนื่องจากคำขอที่ SDK สร้างขึ้นจะถูกส่งไปยังเซิร์ฟเวอร์ Firebase AI Logic ก่อน ซึ่งทำหน้าที่เป็นเกตเวย์พร็อกซีที่Firebase App Checkการยืนยัน เกิดขึ้นก่อนที่ระบบจะอนุญาตให้คำขอไปยังแบ็กเอนด์ของผู้ให้บริการ "Gemini API" ที่คุณเลือกและ API เพื่อเข้าถึงโมเดล Gemini และ ImagenFirebase AI Logic