שילוב של Identity Platform עם reCAPTCHA Enterprise API
במאמר הזה מוסבר איך להשתמש בשילוב של Identity Platform עם reCAPTCHA Enterprise API כדי לשפר את האבטחה של המשתמשים. התכונה הזו משפרת את העמידות של האפליקציה בפני ספאם, ניצול לרעה ופעילות שמקורה בתרמית.
השילוב יוצר בשבילכם הערכה של reCAPTCHA Enterprise כדי לאמת בקשות של משתמשים. למחירון של reCAPTCHA
סקירה כללית
כשמגדירים את השילוב של Identity Platform עם reCAPTCHA Enterprise API, מפעילים את תכונת ההגנה שמוגדרת כברירת מחדל ב-reCAPTCHA – הגנה מפני בוטים של reCAPTCHA. כשמפעילים את ההגנה מפני בוטים, פלטפורמת Identity Platform מקצה בשבילכם בפרויקט מפתחות reCAPTCHA שמבוססים על ניקוד. כשמשתמש ניגש לאפליקציה או לאתר באמצעות אחת מהפעולות הבאות, ה-SDK של הלקוח טוען את reCAPTCHA כשהספק התואם מופעל.
| ספק | פעולה | Method |
|---|---|---|
passwordProvider |
כניסה באמצעות כתובת אימייל וסיסמה | signInWithPassword |
| הרשמה באמצעות כתובת אימייל וסיסמה | signUpPassword |
|
| כניסה באמצעות קישור באימייל | getOobCode |
|
| בוצע איפוס של סיסמה | getOobCode |
|
phoneProvider |
הרשמה או כניסה באמצעות מספר טלפון | sendVerificationCode |
| רישום מספר טלפון לאימות רב-שלבי (MFA) | mfaSmsEnrollment |
|
| כניסה באמצעות מספר טלפון לאימות רב-שלבי (MFA) | mfaSmsSignIn |
לאחר מכן, מערכת reCAPTCHA מספקת ל-Identity Platform ניקוד שמעריך את הסיכון של הבקשה על סמך ההגדרות שלכם והיכולת שלכם להתמודד עם סיכונים.
מידע נוסף זמין במאמר סקירה כללית של reCAPTCHA.
לפני שמתחילים
בהתאם לסוג תהליך האימות שאתם רוצים להגן עליו באמצעות reCAPTCHA, ודאו שהגדרתם את הדברים הבאים:
- בתהליכי אימות של אימייל וסיסמה, ודאו שהגדרתם כניסה באמצעות אימייל למשתמשים.
בתהליכי אימות שמבוססים על SMS, ודאו שהצטרפתם לפחות לאחת מהאפשרויות הבאות:
- כניסה באמצעות הטלפון למשתמשים.
- אימות רב-שלבי לאפליקציות אינטרנט, Android או iOS.
יצירה של חשבון שירות
כדי לשלב את Identity Platform עם reCAPTCHA Enterprise API, צריך חשבון שירות של Identity Platform לכל פרויקט שמשתמש ב-reCAPTCHA. כך Identity Platform יכולה לנהל את מפתחות reCAPTCHA בשבילכם. אם כבר יצרתם חשבון שירות, תנו לו גישה ל-reCAPTCHA.
אם עדיין לא יצרתם חשבון שירות או שיש לכם פרויקטים נוספים שאתם רוצים להגן עליהם באמצעות reCAPTCHA:
משתמשים ב-Google Cloud CLI כדי ליצור חשבון שירות:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_IDמחליפים את
PROJECT_IDבמזהה הפרויקט.נותנים לחשבון השירות גישה ל-reCAPTCHA:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit. \ --role=roles/identitytoolkit.serviceAgentמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
PROJECT_NUMBER: מספר החשבון של הפרויקט
-
התנהגות ההגנה מפני בוטים של reCAPTCHA לפי ספק
ההתנהגות של ההגנה מפני בוטים של reCAPTCHA תלויה בספק הזהויות שאתם מגדירים:
ספק אימייל וסיסמה
בתהליכי אימות של אימייל וסיסמה, ההגנה מפני בוטים של reCAPTCHA תומכת בשני מצבים: ביקורת ואכיפה.
מצב ביקורת
כשמגדירים את אכיפת האימות באמצעות אימייל וסיסמה למצב ביקורת, פלטפורמת Identity Platform יוצרת בפרויקט מפתח reCAPTCHA אחד או יותר, שמשמשים להערכת התנועה לממשקי ה-API של Identity Platform בלי לחסום בקשות. כדי להחליט אם להפעיל את אכיפת reCAPTCHA, אתם יכולים להשתמש במדדים שנוצרים במהלך מצב הביקורת.
מצב אכיפה
כשמגדירים את אכיפת האימייל והסיסמה למצב אכיפה, Identity Platform יוצרת בפרויקט מפתח reCAPTCHA אחד או יותר, שמשמשים להערכת התנועה לממשקי ה-API של Identity Platform. בקשות API שלא כוללות אסימון reCAPTCHA נדחות. צריך להפעיל את האכיפה רק אחרי שמעבירים את כל הלקוחות ל-SDK עם תמיכה ב-reCAPTCHA.
ספק הטלפון
כשמפעילים הגנה מפני בוטים בתהליכי אימות באמצעות הטלפון, על ידי הגדרת phoneEnforcementState ל-ENFORCE ו-useSmsBotScore ל-true, Identity Platform משתמשת בהגנה מפני בוטים של reCAPTCHA לאימות האפליקציה. אם בקשת המשתמש עוברת את הערכת ההגנה מפני בוטים, נשלח קוד אימות ב-SMS. אם בקשה של משתמש נכשלת בהערכת ההגנה מפני בוטים, Identity Platform חוסמת את הבקשה ולא שולחת הודעת SMS עם קוד אימות.
לא צריך להגדיר אימות חלופי כשמפעילים הגנה מפני בוטים בתהליכי אימות באמצעות הטלפון, וגם לא צריך להגדיר שיטות אימות נוספות לאפליקציה. עם זאת, מומלץ להגדיר את מאמת reCAPTCHA לאפליקציות אינטרנט כדי לוודא ש-reCAPTCHA גרסה 2 זמין אם תחליטו להשבית את ההגנה מפני בוטים.
הגדרת השילוב של Identity Platform עם reCAPTCHA Enterprise API
כדי להגדיר את השילוב של Identity Platform עם reCAPTCHA Enterprise API, צריך לבצע את הפעולות הבאות:
- משתמשים ב-SDK לאדמינים כדי להגדיר את מצב האכיפה של reCAPTCHA ולהפעיל הגנה מפני בוטים.
- מגדירים את ה-SDK של הלקוח לפלטפורמה של האפליקציה.
בתהליכי אימות של כתובת אימייל וסיסמה, מומלץ קודם להפעיל את אכיפת reCAPTCHA במצב ביקורת ולעקוב אחרי מדדי reCAPTCHA שהפרויקט מפיק, כדי לא להפריע לתנועת המשתמשים בזמן שמוודאים שתהליכי האימות מוגנים. אחרי שמוודאים שתהליכי האימות מוגנים, מגדירים את ההגנה מפני בוטים לערך ENFORCE. בתהליכי אימות באמצעות הטלפון, מפעילים את ההגנה מפני בוטים על ידי הגדרת phoneEnforcementState ל-ENFORCE ו-useSmsBotScore ל-true, ועוקבים אחרי המדדים של reCAPTCHA כדי לשפר את ספי הניקוד.
הפעלת הגנה מפני בוטים באמצעות reCAPTCHA
ספק אימייל וסיסמה
כדי להפעיל הגנה מפני בוטים באמצעות reCAPTCHA בתהליכי אימות של כתובת אימייל וסיסמה, מבצעים את הפעולות הבאות:
אם עדיין לא עשיתם זאת, הפעילו את reCAPTCHA Enterprise API בפרויקט.
כדי להפעיל הגנה מפני בוטים בפרויקט, משתמשים ב-SDK לאדמינים. התמיכה ב-reCAPTCHA זמינה בגרסאות 11.7.0 ואילך של Node.js SDK לאדמינים.
לדוגמה:
// Update project config with reCAPTCHA config const updateConfigRequest = { recaptchaConfig: { emailPasswordEnforcementState: 'ENFORCE_MODE', managedRules: [{ endScore: END_SCORE, action: 'BLOCK' }] } }; const updateProjectConfigWithRecaptcha = () => { getAuth().projectConfigManager().updateProjectConfig(updateConfigRequest).then((response) => { console.log('Updated reCAPTCHA config for project: ', response.recaptchaConfig); }).catch((error) => { console.log('Error updating project config:', error); }); }מחליפים את מה שכתוב בשדות הבאים:
-
ENFORCE_MODE: המצב שרוצים להגדיר לאכיפת אימות של כתובת אימייל וסיסמה ב-reCAPTCHA. הערכים התקינים הםOFF,AUDITו-ENFORCE. כדי להפעיל הגנה מפני בוטים, צריך להגדיר את הפרמטר הזה לערךAUDITאוENFORCE. כשמפעילים את ההגנה מפני בוטים בפעם הראשונה, מומלץ להגדיר את הפרמטר הזה לערךAUDITולוודא שתהליכי האימות מוגנים לפני שמגדירים אותו לערךENFORCE. למידע נוסף על אופן הפעולה של המצבים, ראו התנהגות ההגנה מפני בוטים של reCAPTCHA לפי ספק. -
END_SCORE: הציון הנמוך ביותר של הערכת ההגנה מפני בוטים שיכול להיות לבקשה לפני שהיא נכשלת. אפשר להגדיר את הציון הזה בין0.0ל-1.0. לדוגמה, אם מגדירים סף של0.6, מערכת reCAPTCHA תדחה כל בקשה עם ציון של0.5או פחות. לכן, ככל שהניקוד שתגדירו יהיה גבוה יותר, כך הכללים יהיו מחמירים יותר.
אפשר גם להפעיל הגנה מפני בוטים באמצעות אותה שיטת הגדרה לדייר באמצעות SDK לאדמינים. למידע נוסף על עדכון דייר, ראו עדכון דייר.
-
אם אתם משתמשים ב-Identity Platform ב-iOS או ב-Android, אתם צריכים לרשום את האפליקציה במסוף Firebase:
- ב-iOS, רושמים כל מזהה חבילה שמשתמש ב-Identity Platform
- ב-Android, רושמים כל שם חבילה של Android שמשתמש ב-Identity Platform
אם אתם משתמשים ב-Identity Platform באינטרנט, אתם צריכים להוסיף דומיין מורשה לכל דומיין שמשתמש ב-reCAPTCHA. כדי להוסיף דומיינים מורשים:
במסוף Google Cloud , נכנסים לדף Identity Platform.
עוברים אל הגדרות > אבטחה.
לוחצים על הוספת דומיין.
מזינים את שם הדומיין ולוחצים על הוספה כדי לשמור את הדומיין.
הקצאת מפתח reCAPTCHA יכולה להימשך כמה דקות.
אם הגדרתם את האכיפה למצב ביקורת, מומלץ לעקוב אחרי המדדים של reCAPTCHA להגנה מפני בוטים כדי לוודא שהתהליכים שלכם מוגנים.
ספק הטלפון
כדי להפעיל את ההגנה של reCAPTCHA מפני בוטים בתהליכי אימות שמבוססים על SMS:
אם עדיין לא עשיתם זאת, הפעילו את reCAPTCHA Enterprise API בפרויקט.
כדי להפעיל הגנה מפני בוטים בפרויקט, משתמשים ב-SDK לאדמינים. התמיכה ב-reCAPTCHA זמינה בגרסאות 12.7.0 ואילך של ה-SDK לאדמינים ב-Node.js.
לדוגמה:
// Update project config with reCAPTCHA config const updateProjectConfigRequest = { recaptchaConfig: { phoneEnforcementState: 'ENFORCE', managedRules: [{ endScore: END_SCORE, action: 'BLOCK' }], useSmsBotScore: true, } }; let projectConfig = await getAuth().projectConfigManager().updateProject(updateProjectConfigRequest);מחליפים את
END_SCOREבציון ההערכה הנמוך ביותר של הגנה מפני בוטים שיכול להיות לבקשה לפני שהיא נכשלת. אפשר להגדיר את הציון הזה בין0.0ל-1.0. לדוגמה, אם מגדירים סף של0.6, מערכת reCAPTCHA תדחה כל בקשה עם ציון של0.5או פחות. לכן, ככל שהניקוד גבוה יותר, הכללים מחמירים יותר.הגדרת
phoneEnforcementStateלערךENFORCEו-useSmsBotScoreלערךtrueמפעילה אכיפה של הגנה מפני בוטים בתהליכי אימות שמבוססים על SMS. למידע נוסף על האופן שבו פועלת האכיפה של ספק הטלפון, קראו את המאמר התנהגות ההגנה מפני בוטים של reCAPTCHA לפי ספק.אפשר גם להפעיל הגנה מפני בוטים באמצעות אותה שיטת הגדרה לדייר באמצעות SDK לאדמינים. למידע נוסף על עדכון דייר, ראו עדכון דייר.
אם אתם משתמשים ב-Identity Platform ב-iOS או ב-Android, אתם צריכים לרשום את האפליקציה ממסוף Firebase:
- ב-iOS, רושמים כל מזהה חבילה שמשתמש ב-Identity Platform
- ב-Android, רושמים כל שם חבילה של Android שמשתמש ב-Identity Platform
אם אתם משתמשים ב-Identity Platform באינטרנט, אתם צריכים להוסיף דומיין מורשה לכל דומיין שמשתמש ב-reCAPTCHA. כדי להוסיף דומיינים מורשים:
במסוף Google Cloud , נכנסים לדף Identity Platform.
עוברים אל הגדרות > אבטחה.
לוחצים על הוספת דומיין.
מזינים את שם הדומיין ולוחצים על הוספה כדי לשמור את הדומיין.
הקצאת מפתח reCAPTCHA יכולה להימשך כמה דקות.
כדי לוודא שהתהליכים שלכם מוגנים, עקבו אחרי המדדים של reCAPTCHA להגנה מפני בוטים.
הגדרת ה-SDK של הלקוח
מגדירים את ה-SDK של הלקוח בהתאם לפלטפורמה של האפליקציה.
אינטרנט
מעדכנים לגרסה העדכנית של ה-SDK לאינטרנט.
- התמיכה של reCAPTCHA באימות באמצעות אימייל וסיסמה באפליקציות אינטרנט זמינה בגרסאות 9.20.0 ואילך של JavaScript SDK.
- התמיכה של reCAPTCHA באימות באמצעות הטלפון באפליקציות אינטרנט זמינה בגרסאות 11 ואילך של JavaScript SDK.
אחרי שמשלבים את ה-SDK לאינטרנט באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ומפעיל את ההגנה לספקים שהגדרתם.
במקרה הצורך, אפשר לאלץ אחזור של אות reCAPTCHA באופן הבא:
import { initializeRecaptchaConfig } from '@firebase/auth'; // Initialize Firebase Authentication const auth = getAuth(); initializeRecaptchaConfig(auth) .then(() => { console.log("Recaptcha Enterprise Config Initialization successful.") }) .catch((error) => { console.error("Recaptcha Enterprise Config Initialization failed with " + error) });
Android
מעדכנים לגרסה העדכנית של Android SDK. התמיכה של reCAPTCHA באימות באמצעות אימייל וסיסמה ובאימות באמצעות הטלפון באפליקציות ל-Android זמינה ב-Android SDK מגרסה 23.1.0 ואילך.
בנוסף, כדי להשתמש ב-reCAPTCHA צריך רמת API 23 (Marshmallow) ומעלה ו-Android מגרסה 6 ומעלה.
אחרי שמשלבים את Android SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את ההגדרות האישיות של reCAPTCHA ומפעיל את ההגנה לספקים שהגדרתם.
מוסיפים את כלל ה-build הבא לקטע של יחסי התלות בקובץ
build.gradleברמת האפליקציה:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'חשוב להשתמש ב-reCAPTCHA SDK בגרסה 18.5.1 ואילך.
במקרה הצורך, אפשר לאלץ אחזור של אות reCAPTCHA באופן הבא:
- Kotlin:
// Initialize Firebase Authentication auth = Firebase.auth auth.initializeRecaptchaConfig().addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "Recaptcha Enterprise Initialization successful.") } else { Log.w(TAG, "Recaptcha Enterprise Initialization failed.") } }- Java:
// Initialize Firebase Authentication auth = FirebaseAuth.getInstance(); auth.initializeRecaptchaConfig().addOnCompleteListener( this, new OnCompleteListener<void>() { @Override public void onComplete(@NonNull Task<void> task) { if (task.isSuccessful()) { Log.d(TAG, "Recaptcha Enterprise Initialization successful."); } else { Log.w(TAG, "Recaptcha Enterprise Initialization failed."); } } });
iOS
מעדכנים ל-iOS SDK בגרסה 11.6.0 ואילך. אחרי שמשלבים את iOS SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ומפעיל את ההגנה לספקים שהגדרתם.
כדי לשלב את reCAPTCHA iOS SDK באפליקציה, קראו את המאמר הכנת הסביבה.
מוודאים שהדגל
-ObjCמופיע בדגלי הקישור. עוברים אל Target (יעד) > Build Settings (הגדרות build) > All (הכול) > Linking (קישור) ומוודאים שמוצג-ObjCב-Other Linker Flags.במקרה הצורך, אפשר לאלץ אחזור של אות reCAPTCHA באופן הבא:
- Swift:
// Initialize Firebase Authentication try await Auth.auth().initializeRecaptchaConfig()- Objective-C:
// Initialize Firebase Authentication [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) { // Firebase Authentication initialization finished }];
מעקב אחרי מדדי reCAPTCHA להגנה מפני בוטים
כדי לוודא שתהליכי האימות מוגנים, עקבו אחרי המדדים של reCAPTCHA שהפרויקט שלכם מפיק. בתהליכי אימות של אימייל וסיסמה, מומלץ לעקוב אחרי המדדים במצב ביקורת לפני שמגדירים את האכיפה למצב אכיפה. לדוגמה, המדדים האלה יכולים לעזור לכם לקבוע אם הגדרתם נכון את השילוב של Identity Platform עם reCAPTCHA Enterprise API. הם גם יכולים לעזור לכם לכוונן את סף הניקוד לתנועת המשתמשים. אם הקצאת המפתחות של reCAPTCHA נכשלת או אם חשבונות השירות הנדרשים לא נוצרו, ניסיונות האימות של reCAPTCHA עדיין יצליחו כרגיל.
כדי לוודא שאימות reCAPTCHA פועל, בודקים את המדדים הבאים שהפרויקט שולח ל-Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_count: מעקב אחרי התוצאות השונות שמתקבלות מ-reCAPTCHA.identitytoolkit.googleapis.com/recaptcha/token_count: מעקב אחרי המספר והסטטוס של אסימוני reCAPTCHA שהתקבלו בקצה העורפי של Identity Platform.-
identitytoolkit.googleapis.com/recaptcha/risk_scores: מעקב אחרי התפלגות הניקוד של ההגנה מפני בוטים.
מידע נוסף זמין במאמר מעקב אחרי מדדי reCAPTCHA.
אכיפת הגנה מפני בוטים באמצעות reCAPTCHA בתהליכי אימות של כתובת אימייל וסיסמה
בתהליכי אימות של אימייל וסיסמה שהגדרתם בהתחלה במצב AUDIT, אחרי שמוודאים שהאפליקציה מקבלת תנועת משתמשים תקינה, אפשר להעביר את emailPasswordEnforcementState למצב ENFORCE כדי לחסום בקשות שנכשלות בבדיקת reCAPTCHA. חשוב לוודא שאתם לא משבשים את חוויית השימוש של משתמשים קיימים, כולל משתמשים שעשויים להשתמש בגרסה ישנה יותר של האפליקציה.
כדי להפעיל אכיפה של reCAPTCHA בתהליכי אימות של אימייל וסיסמה בפרויקט או בדייר, מריצים את הקוד הבא באמצעות SDK לאדמינים:
const enforceRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'ENFORCE',
}
};
השבתת ההגנה מפני בוטים של reCAPTCHA
ספק אימייל וסיסמה
כדי להשבית את ההגנה מפני בוטים בתהליכי אימות באמצעות אימייל וסיסמה, מריצים את הפקודה הבאה באמצעות SDK לאדמינים:
const disableRequest = {
recaptchaConfig: {
emailPasswordEnforcementState: 'OFF',
}
};
ספק הטלפון
כדי להשבית את כל ההגנה של reCAPTCHA בטלפון, כולל הגנה מפני בוטים, בתהליכי אימות שמבוססים על SMS, צריך להריץ את הפקודה הבאה באמצעות SDK לאדמינים:
const disableRequest = {
recaptchaConfig: {
phoneEnforcementState: 'OFF',
useSmsBotScore: false,
useSmsTollFraudProtection: false
}
};
אם אתם משתמשים גם בהגנה על סמס של reCAPTCHA ורוצים להשאיר אותה מופעלת בזמן שאתם משביתים את ההגנה מפני בוטים, הגדירו את useSmsBotScore ל-false והשאירו את phoneEnforcementState מוגדר ל-ENFORCE:
const disableBotScoreOnlyRequest = {
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsBotScore: false,
useSmsTollFraudProtection: true
}
};
שינוי החלטות של reCAPTCHA באמצעות פונקציות Cloud Run
בנוסף להגדרת ערכי סף לניקוד, אתם יכולים לשנות את ההחלטה של reCAPTCHA לגבי טוקן מסוים באמצעות פונקציות חסימה, כדי לאפשר או לחסום תהליכים על סמך גורמים בהתאמה אישית. זה יכול לעזור במקרים שבהם הציון של reCAPTCHA להתחברות של משתמש מסוים נמוך, אבל המשתמש מהימן או אומת באמצעים אחרים, ולכן הוא יכול להשלים את הכניסה.
בדוגמה הבאה מוסבר איך לשנות את ההחלטה של reCAPTCHA באמצעות פונקציות חסימה:
Node.js
const functions = require("firebase-functions/v1");
exports.beforesmsv1 = functions.auth.user().beforeSms((context) => {
if (
context.smsType === "SIGN_IN_OR_SIGN_UP" &&
context.additionalUserInfo.phoneNumber.includes('+91')
) {
return {
recaptchaActionOverride: "ALLOW",
};
}
// Allow users to sign in with recaptcha score greater than 0.5
if (event.additionalUserInfo.recaptchaScore > 0.5) {
return {
recaptchaActionOverride: 'ALLOW',
};
}
// Block all others.
return {
recaptchaActionOverride: 'BLOCK',
}
});
המאמרים הבאים
- הפעילו את ההגנה על סמס של reCAPTCHA בתהליכי אימות שמבוססים על סמס.
- איך משתמשים במפתח reCAPTCHA משלכם
- מידע נוסף על מעקב אחרי מדדי reCAPTCHA
- reCAPTCHA