Check out what’s new from Firebase at Google I/O 2022. Learn more

เปิดใช้งาน App Check ด้วย reCAPTCHA v3 ในเว็บแอป

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

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

โปรดทราบว่าผู้ใช้จะมองไม่เห็น reCAPTCHA v3 ผู้ให้บริการ reCAPTCHA v3 จะไม่กำหนดให้ผู้ใช้ต้องแก้ปัญหาเมื่อใดก็ได้ ดู เอกสารประกอบ reCAPTCHA v3

หากคุณต้องการใช้ App Check กับผู้ให้บริการที่คุณกำหนดเอง โปรดดู ที่ Implement a custom App Check provider

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

  1. เพิ่ม Firebase ในโครงการ JavaScript หากคุณยังไม่ได้ดำเนินการ

  2. ลงทะเบียนไซต์ของคุณสำหรับ reCAPTCHA v3 และรับรหัสไซต์ reCAPTCHA v3 และรหัสลับ

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

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

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

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

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

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

เพิ่ม Firebase ลงในเว็บแอปของ คุณ หากยังไม่ได้ทำ อย่าลืมนำเข้าไลบรารี App Check

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

เพิ่มรหัสเริ่มต้นต่อไปนี้ในแอปพลิเคชันของคุณ ก่อนที่คุณจะเข้าถึงบริการใดๆ ของ Firebase คุณจะต้องส่งรหัส ไซต์ reCAPTCHA ที่คุณสร้างในคอนโซล reCAPTCHA เพื่อ activate()

Web version 9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck, ReCaptchaV3Provider } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

// Pass your reCAPTCHA v3 site key (public key) to activate(). Make sure this
// key is the counterpart to the secret key you set in the Firebase console.
const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaV3Provider('abcdefghijklmnopqrstuvwxy-1234567890abcd'),

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true
});

Web version 8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
// Pass your reCAPTCHA v3 site key (public key) to activate(). Make sure this
// key is the counterpart to the secret key you set in the Firebase console.
appCheck.activate(
  'abcdefghijklmnopqrstuvwxy-1234567890abcd',

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • หากแอปของคุณยังไม่เปิดตัว คุณควรเปิดใช้การบังคับใช้ 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 Console โดย สร้างตัวนับตามบันทึกโดยใช้ ตัวกรองเมตริกต่อไปนี้

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. เปิดส่วนการ ตรวจสอบแอป ของคอนโซล Firebase

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

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

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

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

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

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

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

ดู ใช้การตรวจสอบแอปกับผู้ให้บริการแก้ไขข้อบกพร่องในเว็บแอป