หน้านี้แสดงวิธีเปิดใช้ App Check ในแอป Flutter โดยใช้ผู้ให้บริการเริ่มต้น ได้แก่ Play Integrity ใน Android, Device Check ในแพลตฟอร์ม Apple และ reCAPTCHA v3 ในเว็บ เมื่อเปิดใช้ App Check คุณจะช่วยให้มั่นใจได้ว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงทรัพยากร Firebase ของโปรเจ็กต์ได้ ดูภาพรวมของฟีเจอร์นี้
1. ตั้งค่าโปรเจ็กต์ Firebase
ติดตั้งและเริ่มต้น FlutterFire หากยังไม่ได้ ทำ
ในคอนโซล Firebase ให้ไปที่ความปลอดภัย > App Check
ในแท็บแอป ให้ลงทะเบียนแอปเพื่อใช้ App Check กับผู้ให้บริการ Play Integrity, DeviceCheck และ reCAPTCHA
โดยปกติแล้วคุณจะต้องลงทะเบียนแอปทั้งหมดของโปรเจ็กต์ เนื่องจากเมื่อคุณเปิดใช้การบังคับใช้สำหรับผลิตภัณฑ์ Firebase แล้ว เฉพาะแอปที่ลงทะเบียนเท่านั้นที่จะเข้าถึงทรัพยากรแบ็กเอนด์ของผลิตภัณฑ์ได้
ไม่บังคับ: ในการตั้งค่าการลงทะเบียนแอป ให้ตั้งค่า Time-to-live (TTL) ที่กำหนดเองสำหรับโทเค็น App Check ที่ผู้ให้บริการออกให้ คุณสามารถตั้งค่า TTL เป็นค่าใดก็ได้ระหว่าง 30 นาทีถึง 7 วัน เมื่อเปลี่ยนค่านี้ โปรดทราบถึงข้อดีข้อเสียต่อไปนี้
- ความปลอดภัย: TTL ที่สั้นลงจะช่วยเพิ่มความปลอดภัย เนื่องจากจะลดระยะเวลาที่ผู้โจมตีจะใช้โทเค็นที่รั่วไหลหรือถูกดักจับในทางที่ผิดได้
- ประสิทธิภาพ: TTL ที่สั้นลงหมายความว่าแอปของคุณจะทำการรับรองความถูกต้องบ่อยขึ้น เนื่องจากกระบวนการรับรองความถูกต้องของแอปจะเพิ่มเวลาในการตอบสนองให้กับคำขอเครือข่ายทุกครั้งที่ดำเนินการ ดังนั้น TTL ที่สั้นจึงอาจส่งผลต่อประสิทธิภาพของแอป
- โควต้าและค่าใช้จ่าย: TTL ที่สั้นลงและการรับรองความถูกต้องซ้ำบ่อยๆ จะทำให้โควต้าหมดเร็วขึ้น และสำหรับบริการแบบชำระเงิน อาจมีค่าใช้จ่ายมากขึ้น ดูโควต้าและขีดจำกัด
TTL เริ่มต้นเหมาะสมกับแอปส่วนใหญ่ โปรดทราบว่าไลบรารี App Check จะรีเฟรชโทเค็นที่ประมาณครึ่งหนึ่งของระยะเวลา TTL
2. เพิ่มไลบรารี App Check ลงในแอป
จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน
flutter pub add firebase_app_checkเมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter อีกครั้ง
flutter run
3. เริ่มต้น App Check
เพิ่มโค้ดการเริ่มต้นต่อไปนี้ลงในแอปเพื่อให้โค้ดทำงานก่อนที่คุณจะใช้บริการ Firebase ใดๆ เช่น Storage แต่หลังจากเรียก Firebase.initializeApp()
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
// Import the firebase_app_check plugin
import 'package:firebase_app_check/firebase_app_check.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
// You can also use a `ReCaptchaEnterpriseProvider` provider instance as an
// argument for `webProvider`
webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'),
// Default provider for Android is the Play Integrity provider. You can use the "AndroidProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Safety Net provider
// 3. Play Integrity provider
androidProvider: AndroidProvider.debug,
// Default provider for iOS/macOS is the Device Check provider. You can use the "AppleProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Device Check provider
// 3. App Attest provider
// 4. App Attest provider with fallback to Device Check provider (App Attest provider is only available on iOS 14.0+, macOS 14.0+)
appleProvider: AppleProvider.appAttest,
);
runApp(App());
}
ขั้นตอนถัดไป
เมื่อติดตั้งไลบรารี App Check ในแอปแล้ว ให้เริ่มเผยแพร่แอปที่อัปเดตแล้วไปยังผู้ใช้
แอปไคลเอ็นต์ที่อัปเดตแล้วจะเริ่มส่งโทเค็น App Check ไปพร้อมกับทุกคำขอที่ส่งไปยัง Firebase แต่ผลิตภัณฑ์ Firebase จะไม่กำหนดให้โทเค็นต้องถูกต้องจนกว่าคุณจะเปิดใช้การบังคับใช้ในส่วน App Check ของคอนโซล Firebase
ตรวจสอบเมตริกและเปิดใช้การบังคับใช้
อย่างไรก็ตาม ก่อนที่จะเปิดใช้การบังคับใช้ คุณควรตรวจสอบว่าการดำเนินการดังกล่าวจะไม่รบกวนผู้ใช้ที่ใช้งานอยู่ซึ่งเป็นผู้ใช้ที่ถูกต้อง ในทางกลับกัน หากคุณเห็นการใช้ทรัพยากรแอปที่น่าสงสัย คุณอาจต้องการเปิดใช้การบังคับใช้เร็วขึ้น
คุณสามารถดูเมตริก App Check สำหรับบริการที่คุณใช้เพื่อช่วยในการตัดสินใจได้ดังนี้
- ตรวจสอบเมตริกคำขอ App Check สำหรับ Realtime Database, Cloud Firestore, Cloud Storage และการตรวจสอบสิทธิ์
- ตรวจสอบเมตริกคำขอ App Check สำหรับ Cloud Functions
เปิดใช้การบังคับใช้ App Check
เมื่อเข้าใจว่า App Check จะส่งผลต่อผู้ใช้อย่างไรและพร้อมที่จะดำเนินการต่อแล้ว คุณสามารถเปิดใช้การบังคับใช้ App Check ได้โดยทำดังนี้
- เปิดใช้การบังคับใช้ App Check สำหรับ Realtime Database, Cloud Firestore, Cloud Storage และการตรวจสอบสิทธิ์
- เปิดใช้การบังคับใช้ App Check สำหรับ Cloud Functions
ใช้ App Check ในสภาพแวดล้อมการแก้ไขข้อบกพร่อง
หากหลังจากลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเรียกใช้แอปในสภาพแวดล้อมที่ App Check ปกติจะไม่จัดประเภทว่าถูกต้อง เช่น โปรแกรมจำลองระหว่างการพัฒนา หรือจากสภาพแวดล้อมการรวมอย่างต่อเนื่อง (CI) คุณสามารถสร้างบิลด์การแก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการการแก้ไขข้อบกพร่องของ App Check แทนผู้ให้บริการการรับรองความถูกต้องจริง
ดูหัวข้อใช้ App Check กับผู้ให้บริการการแก้ไขข้อบกพร่องในแอป Flutter