ป้องกันการละเมิด Gemini API ด้วย Firebase App Check

เมื่อเรียกใช้ 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 จะใช้ได้เพียงครั้งเดียว

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

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

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

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

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

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

ตั้งค่า App Check

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

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

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

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

  3. (แนะนำ) เพิ่มการปกป้องโดยเพิ่มการป้องกันการเล่นซ้ำ ซึ่งหมายความว่าใช้โทเค็น App Check ได้เพียงครั้งเดียว

เพิ่มการป้องกันโดยเพิ่มการป้องกันการเล่นซ้ำ

เราขอแนะนำให้ใช้ 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 จะแคชโทเค็นเซสชันเหล่านี้ ส่งพร้อมกับ คำขอจากแอป และนำกลับมาใช้ใหม่ได้จนกว่า TTL จะหมดอายุ การใช้โทเค็นเซสชันถือเป็นการป้องกันพื้นฐาน

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

  • App Check จะบล็อกคำขอไปยัง Firebase AI Logic ที่ใช้ โทเค็นเซสชัน แต่ App Check จะอนุญาตคำขอไปยัง Firebase AI Logic ก็ต่อเมื่อใช้โทเค็นแบบจำกัดการใช้งานที่สร้างขึ้นใหม่

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

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

ตั้งค่าและบังคับใช้การป้องกันการเล่นซ้ำ

คลิกผู้ให้บริการ 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(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. บังคับใช้การป้องกันการเล่นซ้ำ

    1. ในฐานของโค้ดของแอป ให้ตรวจสอบว่าคุณได้เปิดใช้โทเค็นแบบจำกัดการใช้งานแล้ว (ดูขั้นตอนก่อนหน้า)

    2. ในFirebaseคอนโซล ให้ไปที่ความปลอดภัย > App Check

    3. ขยายมุมมองเมตริกสำหรับ Firebase AI Logic

    4. ตรวจสอบว่าการป้องกันพื้นฐานมีผลบังคับใช้ แล้วคลิกต่อไป

    5. สำหรับการป้องกันการเล่นซ้ำ ให้เลือกไม่บังคับใช้ (ตรวจสอบเท่านั้น) หรือบังคับใช้

      พิจารณาสิ่งต่อไปนี้เพื่อตัดสินใจว่าจะบังคับใช้การป้องกันการเล่นซ้ำเมื่อใด

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

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

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

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