ใช้ App Check เพื่อรักษาความปลอดภัยให้คีย์ API

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

App Check เหมาะกับฉันไหม

เราขอแนะนำให้ใช้ App Check ในกรณีส่วนใหญ่ แต่ไม่จำเป็นต้องใช้หรือระบบไม่รองรับ App Check ในกรณีต่อไปนี้

  • คุณกำลังใช้ Places SDK เวอร์ชันเดิม ระบบรองรับ App Check สำหรับ Places SDK (ใหม่) เท่านั้น
  • แอปส่วนตัวหรือแอปทดลอง หากแอปของคุณไม่สามารถเข้าถึงได้แบบสาธารณะ ก็ไม่จำเป็นต้องใช้ App Check
  • หากแอปของคุณใช้เฉพาะแบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์ คุณก็ไม่จำเป็นต้องใช้ App Check อย่างไรก็ตาม หากไคลเอ็นต์สาธารณะ (เช่น แอปบนอุปกรณ์เคลื่อนที่) ใช้เซิร์ฟเวอร์ที่สื่อสารกับ GMP ให้พิจารณาใช้ App Check เพื่อปกป้องเซิร์ฟเวอร์นั้นแทน GMP

ภาพรวมของขั้นตอนการติดตั้งใช้งาน

โดยภาพรวมแล้ว ขั้นตอนที่คุณต้องทำเพื่อผสานรวมแอปกับ App Check มีดังนี้

  1. เพิ่ม Firebase ไปยังแอปของคุณ
  2. เพิ่มและเริ่มต้นไลบรารี App Check
  3. เพิ่มผู้ให้บริการโทเค็นลงในแอป
  4. เริ่มต้นใช้งาน Places API และ App Check API
  5. เปิดใช้การแก้ไขข้อบกพร่อง
  6. ตรวจสอบคำขอแอปและตัดสินใจเกี่ยวกับการบังคับใช้

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

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

ข้อควรพิจารณาเมื่อวางแผนการผสานรวม App Check

สิ่งที่คุณควรพิจารณาขณะวางแผนการผสานรวมมีดังนี้

  • ผู้ให้บริการเอกสารรับรองรายหนึ่งที่เราแนะนำคือ reCAPTCHA Enterprise ซึ่งจะเรียกเก็บเงินสำหรับการประเมินมากกว่า 10,000 ครั้งต่อเดือน

    ผู้ให้บริการเอกสารรับรองอีกรายที่เราแนะนำคือ reCAPTCHA v3 ซึ่งมีโควต้า หลังจากนั้นระบบจะไม่ประเมินการเข้าชม

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

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

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

ผสานรวมแอปกับ App Check

ข้อกำหนดเบื้องต้นและข้อกำหนด

ขั้นตอนที่ 1: เพิ่ม Firebase ลงในแอป

ทำตามวิธีการในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ Firebase เพื่อเพิ่ม Firebase ลงในแอป

ขั้นตอนที่ 2: เพิ่มไลบรารี App Check และเริ่มต้น App Check

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

ขั้นตอนที่ 3: โหลดไลบรารี Maps JS API

  1. โหลดไลบรารี Core, Maps และ Places ดังที่แสดงในข้อมูลโค้ดต่อไปนี้ ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบเกี่ยวกับคลาส Place ของ Maps JavaScript API

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

ขั้นตอนที่ 4: เริ่มต้นใช้งาน Places API และ App Check API

  1. เริ่มต้น App Check โดยใช้การกำหนดค่าที่คอนโซล Firebase มีให้
  2. ตรวจสอบว่าคำขอที่ส่งไปยัง Maps JS API มีโทเค็น App Check แนบมาด้วย โดยทำดังนี้
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

ขั้นตอนที่ 5: เปิดใช้การแก้ไขข้อบกพร่อง (ไม่บังคับ)

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

วิธีทดสอบแอปในเครื่อง

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

วิธีเรียกใช้แอปในสภาพแวดล้อม CI

  • สร้าง UUID4 แบบสุ่มจากคอนโซล Firebase
  • เพิ่ม UUID4 เป็นโทเค็นการแก้ไขข้อบกพร่อง แล้วคัดลอกลงในที่เก็บข้อมูลลับที่การทดสอบ CI จะเข้าถึงต่อการเรียกใช้การทดสอบแต่ละครั้ง
  • ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบของ App Check

ขั้นตอนที่ 6: ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้

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

ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบของ Firebase App Check