ใช้ App Check เพื่อรักษาคีย์ API ให้ปลอดภัย
App Check ของ Firebase ช่วยปกป้องการเรียกจากแอปของคุณไปยัง 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 ในระดับสูงมีดังนี้
- เพิ่ม Firebase ไปยังแอป
- เพิ่มและเริ่มต้นใช้งานไลบรารี App Check
- เพิ่มผู้ให้บริการโทเค็นลงในแอป
- เริ่มต้น API ของ Places และ App Check
- เปิดใช้การแก้ไขข้อบกพร่อง
- ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้
เมื่อผสานรวมกับ App Check แล้ว คุณจะดูเมตริกการเข้าชมแบ็กเอนด์ในคอนโซล Firebase ได้ เมตริกเหล่านี้แสดงรายละเอียดของคำขอตามว่ามีโทเค็น App Check ที่ถูกต้องหรือไม่ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Firebase App Check
เมื่อมั่นใจว่าคำขอส่วนใหญ่มาจากแหล่งที่มาที่ถูกต้องและผู้ใช้อัปเดตแอปเป็นเวอร์ชันล่าสุดที่มีการติดตั้งใช้งาน App Check แล้ว คุณก็เปิดการบังคับใช้ได้ เมื่อเปิดการบังคับใช้แล้ว App Check จะปฏิเสธการเข้าชมทั้งหมดที่ไม่มีโทเค็น App Check ที่ถูกต้อง
ข้อควรพิจารณาเมื่อวางแผนการผสานรวม App Check
ต่อไปนี้คือสิ่งที่คุณควรพิจารณาเมื่อวางแผนการผสานรวม
- reCAPTCHA Enterprise ซึ่งเป็นหนึ่งในผู้ให้บริการการรับรองที่เราแนะนำจะเรียกเก็บเงินสำหรับการประเมินมากกว่า 10,000 ครั้งต่อเดือน
ผู้ให้บริการการรับรองรายอื่นๆ ที่เราแนะนำคือ reCAPTCHA v3 ซึ่งมีโควต้า หลังจากนั้นระบบจะไม่ประเมินการเข้าชม
คุณเลือกใช้ผู้ให้บริการการรับรองที่กำหนดเองได้ แต่กรณีการใช้งานนี้เป็นกรณีการใช้งานขั้นสูง ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ App Check
-
ผู้ใช้แอปของคุณจะพบเวลาในการตอบสนองบางอย่างเมื่อเริ่มต้น อย่างไรก็ตาม หลังจากนั้น การรับรองอีกครั้งเป็นระยะจะเกิดขึ้นในเบื้องหลัง และผู้ใช้จะไม่พบเวลาในการตอบสนองอีกต่อไป ปริมาณเวลาในการตอบสนองที่แน่นอนเมื่อเริ่มต้นระบบจะขึ้นอยู่กับผู้ให้บริการการรับรองที่คุณเลือก
ระยะเวลาที่โทเค็น App Check ใช้งานได้ (Time to Live หรือ TTL) จะกำหนดความถี่ของการรับรองอีกครั้ง คุณกำหนดค่าระยะเวลานี้ได้ในคอนโซล Firebase การรับรองอีกครั้งจะเกิดขึ้นเมื่อ TTL ผ่านไปประมาณครึ่งหนึ่ง ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Firebase สำหรับผู้ให้บริการการรับรอง
ผสานรวมแอปกับ App Check
ข้อกำหนดเบื้องต้นและข้อกำหนด
- แอปที่โหลดMaps JS API เวอร์ชันล่าสุดรายสัปดาห์หรือรายไตรมาส, Core และไลบรารี Places
- โปรเจ็กต์ระบบคลาวด์ที่เปิดใช้ Maps JS และ Places API (ใหม่)
- คุณต้องเป็นเจ้าของแอปใน Cloud Console
- คุณจะต้องมีรหัสโปรเจ็กต์ของแอปจาก Cloud Console
ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอป
ทําตามวิธีการในเอกสารประกอบสําหรับนักพัฒนาแอป Firebase เพื่อเพิ่ม Firebase ลงในแอป
ขั้นตอนที่ 2: เพิ่มไลบรารี App Check และเริ่มต้น App Check
Firebase มีวิธีการสำหรับผู้ให้บริการการรับรองเริ่มต้นแต่ละราย วิธีการเหล่านี้จะแสดงวิธีตั้งค่าโปรเจ็กต์ Firebase และเพิ่มไลบรารี App Check ลงในแอป ทำตามตัวอย่างโค้ดที่ให้ไว้เพื่อเริ่มต้น App Check
ขั้นตอนที่ 3: โหลดไลบรารี Maps JS API
โหลดไลบรารีหลัก, Maps และ Places ดังที่แสดงในข้อมูลโค้ดต่อไปนี้ ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบเกี่ยวกับคลาสสถานที่ของ 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
- เริ่มต้น App Check โดยใช้การกำหนดค่าที่คอนโซล Firebase ระบุ
- ตรวจสอบว่าคำขอไปยัง 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