Catch up on everthing we announced at this year's Firebase Summit. Learn more

เปิดใช้งานการตรวจสอบแอปด้วย SafetyNet บน Android

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

หากคุณต้องการที่จะใช้ตรวจสอบกับผู้ให้บริการ App ของคุณเองดู Implement ผู้ให้บริการตรวจสอบที่กำหนดเอง App

1. ตั้งค่าโปรเจ็กต์ Firebase ของคุณ

  1. เพิ่ม Firebase กับโครงการ Android ของคุณ ถ้าคุณยังไม่ได้ดำเนินการ

  2. ลงทะเบียนปพลิเคชันของคุณเพื่อใช้เช็คต่างกับผู้ให้บริการ SafetyNet ใน การตรวจสอบการตั้งค่าโครงการ> App ส่วนของคอนโซล Firebase คุณจะต้อง ให้ SHA-256 ลายนิ้วมือ ของใบรับรองการลงนามของแอป

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

  3. ตัวเลือก: ในการตั้งค่าการลงทะเบียนแอปตั้งค่าที่กำหนดเองเวลาในการถ่ายทอดสด (TTL) สำหรับ App ตรวจสอบโทเค็นที่ออกโดยผู้ให้บริการ คุณสามารถตั้งค่า TTL เป็นค่าใดก็ได้ระหว่าง 30 นาทีถึง 7 วัน เมื่อเปลี่ยนค่านี้ โปรดระวังการประนีประนอมต่อไปนี้:

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

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

2. เพิ่มไลบรารี App Check ในแอปของคุณ

ในโมดูลของคุณ (app ระดับ) ไฟล์ Gradle (ปกติ app/build.gradle ) ประกาศพึ่งพาสำหรับ App ตรวจสอบห้องสมุด Android:

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta03'
}

คอตลิน+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta03'
}

3. เริ่มต้นการตรวจสอบแอป

เพิ่มโค้ดการเริ่มต้นต่อไปนี้ในแอปเพื่อให้ทำงานก่อนที่คุณจะใช้ Firebase SDK อื่นๆ

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        SafetyNetAppCheckProviderFactory.getInstance());

คอตลิน+KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    SafetyNetAppCheckProviderFactory.getInstance()
)

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

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

4. ตรวจสอบตัวชี้วัดคำขอ

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

ฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage

เครื่องมือสำคัญที่คุณสามารถใช้ในการตัดสินใจนี้สำหรับฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage คือหน้าจอตัววัดคำขอ App Check

เพื่อดู App ตัวชี้วัดการตรวจสอบคำขอสำหรับผลิตภัณฑ์ให้เปิด โครงการการตั้งค่า> App ตรวจสอบ ในส่วนของคอนโซล Firebase ตัวอย่างเช่น:

ภาพหน้าจอของหน้าเมตริก App Check

ตัวชี้วัดคำขอสำหรับแต่ละผลิตภัณฑ์แบ่งออกเป็นสี่หมวดหมู่:

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

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

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

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

การแจกจ่ายหมวดหมู่เหล่านี้สำหรับแอปของคุณควรแจ้งเมื่อคุณตัดสินใจเปิดใช้การบังคับใช้ นี่คือแนวทางปฏิบัติบางประการ:

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

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

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

ฟังก์ชั่นคลาวด์

สำหรับ Cloud Functions คุณสามารถรับเมตริก App Check ได้โดยตรวจสอบบันทึกของฟังก์ชัน การเรียกใช้ฟังก์ชันที่เรียกได้ทุกครั้งจะปล่อยรายการบันทึกที่มีโครงสร้างดังตัวอย่างต่อไปนี้

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

คุณสามารถวิเคราะห์ตัวชี้วัดเหล่านี้ในคอนโซล Google Cloud โดย การสร้างบันทึกตามตัวชี้วัดที่เคาน์เตอร์ ที่มีตัวกรองตัวชี้วัดต่อไปนี้:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

ป้ายตัวชี้วัด โดยใช้สนาม jsonPayload.verifications.appCheck

5. เปิดใช้งานการบังคับใช้

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

ฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage

ในการเปิดใช้การบังคับใช้สำหรับฐานข้อมูลเรียลไทม์, Cloud Firestore (iOS และ Android) และที่เก็บข้อมูลบนคลาวด์:

  1. เปิด ตรวจสอบการตั้งโครงการ> App ส่วนของคอนโซล Firebase

  2. ขยายมุมมองเมตริกของผลิตภัณฑ์ที่คุณต้องการเปิดใช้การบังคับใช้

  3. คลิกที่บังคับใช้และยืนยันการเลือกของคุณ

โปรดทราบว่าอาจใช้เวลาถึง 10 นาทีหลังจากที่คุณเปิดใช้การบังคับใช้เพื่อให้มีผล

ฟังก์ชั่นคลาวด์

ดู เปิดใช้งานการตรวจสอบการบังคับใช้ App สำหรับฟังก์ชั่นคลาวด์

ขั้นตอนถัดไป

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

ดู การตรวจสอบการใช้งาน App กับผู้ให้บริการตรวจแก้จุดบกพร่องบน Android