הפעלת reCAPTCHA SMS defense לאימות מבוסס-SMS
במאמר הזה מוסבר איך אפשר להשתמש ב-reCAPTCHA SMS defense כדי להגן על תהליכים שמבוססים על SMS ב-Identity Platform, כמו אימות טלפוני ואימות רב-שלבי, מפני הונאות שקשורות לחיוב על SMS (שנקראות גם התקפות SMS pumping). השילוב הזה עוזר למנוע מתנועת SMS לא מורשית להשפיע לרעה על המשתמשים והמשאבים שלכם.
סקירה כללית
אם האפליקציה שלכם מסתמכת על SMS לאימות, מומלץ להפעיל את השילוב של reCAPTCHA SMS defense. אחרי שמפעילים את התכונה, אימות ב-Firebase ו-Identity Platform מפעילים באופן אוטומטי את התכונה reCAPTCHA הגנה על SMS בכל פעם שמשתמש קצה מבקש הודעת SMS לאימות מהאפליקציה או מהאתר שלכם באמצעות הפעולות הבאות של phoneProvider:
| פעולה | Method | |
|---|---|---|
| הרשמה או כניסה באמצעות מספר טלפון | sendVerificationCode |
|
| רישום מספר טלפון לאימות דו-שלבי | mfaSmsEnrollment |
|
| כניסה באמצעות מספר טלפון עם אימות דו-שלבי | mfaSmsSignIn |
לאחר מכן, reCAPTCHA מספק ל-אימות ב-Firebase או ל-Identity Platform ציון סיכון שמציין את הסבירות להונאת תשלום על הודעות SMS עבור מספר הטלפון של המשתמש. התוצאה הזו מושווית לסף שהגדרתם. אם ציון הסיכון חורג מהסף הזה, הודעת ה-SMS לא נשלחת, וכך נחסמים ניסיונות הונאה.
כדי להבין איך פועלים הציונים של reCAPTCHA הגנה על SMS, אפשר לקרוא את המאמר בנושא הסבר על הציונים.
מידע נוסף על התכונה reCAPTCHA הגנה על SMS זמין במאמר איתור הונאת SMS ומניעתה.
מצבי אכיפה של אימות טלפוני באמצעות reCAPTCHA
אתם יכולים להגדיר אכיפה של אימות באמצעות הטלפון להגנה על SMS ב-reCAPTCHA כדי להשתמש במצב ביקורת או במצב אכיפה.
מצב ביקורת
כשמגדירים את האכיפה של אימות באמצעות טלפון למצב ביקורת, Identity Platform משתמש בהגנה על SMS של reCAPTCHA לאימות האפליקציה. אם הבקשה של המשתמש עוברת את ההערכה לגבי הונאת טלפונים, נשלח קוד אימות ב-SMS. אם הבקשה של משתמש לא עוברת את ההערכה לגבי הונאת תשלום על שיחות, ואתם משתמשים ב-SDK של הלקוח, Identity Platform מפעיל שיטות אימות חלופיות כדי להשלים את תהליך האימות של הטלפון. שיטות הגיבוי המקובלות תלויות בפלטפורמה של האפליקציה.
ה-SDK של הלקוח מפעיל את שיטות האימות החלופיות בתרחישים הבאים:
- חסר טוקן reCAPTCHA.
- טוקן ה-reCAPTCHA לא תקין או שתוקפו פג.
- טוקן ה-reCAPTCHA לא עומד בסף הניקוד.
- ההגדרה של reCAPTCHA לא תקינה.
מוודאים ששיטות האימות החלופיות לפלטפורמה של האפליקציה מוגדרות ומוכנות להפעלה על ידי ה-SDK של הלקוח, אם יש צורך בכך.
אינטרנט
אם ההערכה הראשונית של הונאת שיחות נכשלת, מצב הביקורת מסתמך על
reCAPTCHA גרסה 2 לאימות. לכן, צריך להגדיר את מאמת ה-reCAPTCHA (RecaptchaVerifier) ולהעביר אותו לפעולות הבאות של אימות הטלפון:
verifyPhoneNumbersignInWithPhoneNumberlinkWithPhoneNumberreauthenticateWithPhoneNumber
auth/argument-error. מידע נוסף על הגדרת מאמת reCAPTCHA מופיע במאמר הגדרת מאמת reCAPTCHA במסמכי Firebase.
Android
אם ההערכה הראשונית של הונאת שיחות בתשלום נכשלת, מצב הביקורת מאמת את האפליקציה באמצעות Play Integrity API. אם האימות הזה נכשל, מופעלת reCAPTCHA גרסה 2. יכול להיות ש-reCAPTCHA גרסה 2 יופעל בתרחישים הבאים:
- אם במכשיר של משתמש הקצה לא מותקנים שירותי Google Play.
- אם האפליקציה לא מופצת דרך חנות Google Play (ב-Authentication SDK גרסה 21.2.0 ואילך).
- אם אסימון SafetyNet שהתקבל לא היה תקין (בגרסאות של Authentication SDK שקודמות לגרסה v21.2.0).
iOS
אם ההערכה הראשונית של הונאת שיחות נכשלת, מצב הביקורת מסתמך על הודעות פוש שקטות לאימות. שיטת האימות הזו כוללת שליחת טוקן לאפליקציה במכשיר ששולח את הבקשה באמצעות התראת פוש שקטה. אם האפליקציה מקבלת את ההתראה, תהליך האימות בטלפון ממשיך. אם האפליקציה לא מקבלת את ההתראה בדחיפה, מופעל reCAPTCHA גרסה 2. יכול להיות שהמערכת תפעיל את reCAPTCHA גרסה 2 אם לא תגדירו את ההתראות בדחיפה בשקט בצורה נכונה.
מידע נוסף על הגדרת אימות אפליקציות ל-iOS זמין במאמר הפעלת אימות אפליקציות במסמכי Firebase.
מצב אכיפה
כשמגדירים את האכיפה של אימות באמצעות טלפון למצב אכיפה, Identity Platform משתמש בהגנה על SMS של reCAPTCHA לאימות האפליקציה. אם הבקשה של המשתמש עוברת את ההערכה לגבי הונאת טלפונים, נשלח קוד אימות ב-SMS. אם הבקשה של המשתמש לא עוברת את ההערכה לגבי הונאת תשלום על שיחות, Identity Platform חוסם את הבקשה ולא שולח הודעת SMS עם קוד אימות.
במצב אכיפה לא נדרש אימות חלופי, ולא צריך להגדיר שיטות אימות נוספות לאפליקציה. עם זאת, מומלץ להגדיר מאמת reCAPTCHA לאפליקציות אינטרנט כדי לוודא ש-reCAPTCHA גרסה 2 מופעל אם מחליטים לשנות את מצב reCAPTCHA של האפליקציה ל-AUDIT או ל-OFF.
לפני שמתחילים
לפני שמפעילים את reCAPTCHA הגנה על SMS ב-Identity Platform, צריך לבצע את המשימות הבאות:
קובעים את ההגדרות הבאות לאפליקציה או לאתר, לפי הצורך:
- כניסה לחשבון באמצעות הטלפון למשתמשים
- אימות רב-שלבי לאפליקציות אינטרנט, Android או iOS.
מגדירים אימות ב-Firebase לאפליקציה או לאתר, בהתאם לצורך:
- באינטרנט: הגדרה של אימות באמצעות הטלפון
- iOS: הגדרת אימות טלפוני
- Android: הגדרה של אימות באמצעות הטלפון
הפעלת הגנה על SMS באמצעות reCAPTCHA
מגדירים את האימות:
-
במסוף Google Cloud , מפעילים את Cloud Shell.
יוצרים זהות בשירות:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_IDמחליפים את
PROJECT_IDבמזהה הפרויקט.מקצים את התפקיד
roles/identitytoolkit.serviceAgentלזהות השירות שיצרתם.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgentמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
PROJECT_NUMBER: מספר חשבון הפרויקט
-
-
מפעילים את reCAPTCHA Enterprise API בפרויקט.
מפעילים את reCAPTCHA הגנה על SMS בפרויקט:
נכנסים לדף reCAPTCHA במסוף Google Cloud .
מוודאים ששם הפרויקט מופיע בבורר המשאבים.
אם שם הפרויקט לא מופיע, לוחצים על בורר המשאבים ובוחרים את הפרויקט.
לוחצים על הגדרות.
בחלונית הגנה על SMS, לוחצים על הגדרה.
לוחצים על המתג הפעלה ואז על שמירה.
כשמפעילים את reCAPTCHA SMS defense, מופעל גם Account Defender, אם הוא לא הופעל עדיין.
יכול להיות שיחלפו כמה דקות עד שההפעלה של reCAPTCHA הגנה על SMS תתעדכן במערכות שלנו. אחרי ההפצה, תתחילו לקבל תגובות שקשורות ל-reCAPTCHA הגנה על SMS כחלק מההערכות.
כדי להגדיר את ההגדרות של reCAPTCHA להגנה על SMS בפרויקט של אימות ב-Firebase או של Identity Platform:
בכתובת ה-URL הבאה, מחליפים את
PROJECT_ID,Recaptcha_MODEו-START_SCORE:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"emailPasswordEnforcementState":"OFF","phoneEnforcementState":"Recaptcha_MODE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}
PROJECT_ID: מזהה הפרויקט שבו מופעלת פלטפורמת הזהויות.
Recaptcha_MODE: המצב שרוצים להגדיר לאכיפה של אימות טלפוני באמצעות reCAPTCHA. הערכים המותרים הםOFF,AUDITו-ENFORCE. כדי להפעיל את reCAPTCHA SMS defense, צריך להגדיר את הפרמטר הזה ל-AUDITאו ל-ENFORCE, ואת הפרמטרuseSmsTollFraudProtectionל-true.כשמפעילים את reCAPTCHA הגנה על SMS בפעם הראשונה, כדאי להשתמש במצב
AUDITכדי לוודא שההגדרה של reCAPTCHA הגנה על SMS פועלת בצורה תקינה. מצבAUDITמיועד אך ורק למטרות אימות. המצב הזה לא ימנע תנועת SMS לא מורשית. מוודאים שלא מופיעים כשלים במרכז הבקרה Metrics. אחרי האימות, מפעילים את מצבENFORCEבאופן מיידי. מידע נוסף על אופן הפעולה של המצבים זמין במאמר מצבי אכיפה של אימות טלפוני ב-reCAPTCHA
START_SCORE: סף שניתן להגדרה, שקובע את הניקוד הכי גבוה שבקשת SMS יכולה לקבל לפני שהיא מסומנת ונחסמת כהונאת טלפון.הסף המינימלי הוא
0.0. הסף המקסימלי הוא0.9. כל בקשה עם ניקוד גבוה מהסף נחשבת כבקשה הונאה. לדוגמה, אם מגדירים את ערך הסף ל-0.3, מערכת reCAPTCHA תחסום כל בקשה עם ציון הונאה של0.4ומעלה.כדי להגביר את רמת ההגנה מפני הונאות, מגדירים את הסף לערך נמוך יותר. כדי להקטין את רמת ההגנה מפני הונאות, מגדירים ערך גבוה יותר לסף. ההגדרה הזו תאפשר ליותר בקשות עם ציונים גבוהים לעבור.
לצורך הטמעה ראשונית, מומלץ להתחיל עם סף גבוה יותר, כמו
0.8, ואז להוריד אותו בהדרגה בהתאם למידת הסיכון שאתם מוכנים לקחת.אנחנו לא ממליצים להגדיר סף של
0.0או1.0. הגדרת ערך הסף ל-0.0תחסום את כל הודעות ה-SMS, ואילו הגדרת הערך ל-1.0תשבית לחלוטין את ההגנה מפני הונאות, מה שעלול לגרום לכך שהודעות SMS לא יישלחו לאזורים בסיכון גבוה.
מזינים את כתובת ה-URL בחלון חדש בדפדפן שבו מחוברים למסוף Google Cloud .
אם אתם משתמשים ב-Identity Platform באינטרנט או ב-Android, אתם יכולים לרשום את האפליקציה שלכם ממסוף Firebase:
ב-Android, צריך לרשום כל שם חבילה ב-Android שמשתמש ב-Identity Platform.
באינטרנט, מוסיפים דומיין מורשה לכל דומיין שמשתמש ב-reCAPTCHA:
נכנסים לדף Identity Platform במסוף Google Cloud .
עוברים אל הגדרות > אבטחה.
לוחצים על הוספת דומיין.
מזינים את שם הדומיין ולוחצים על הוספה כדי לשמור את הדומיין.
הקצאת מפתח reCAPTCHA יכולה להימשך כמה דקות.
אימות ההגדרה:
מאחזרים את פרטי ההגדרה של reCAPTCHA:
{replace-your-project}עםprojectIdאוprojectNumber. מריצים אתGetConfigAPI בחלונית הצדדית כדי לאחזר את ההגדרה של reCAPTCHA.בודקים שהגדרתם את reCAPTCHA SMS defense בצורה נכונה:
אם הגדרתם את reCAPTCHA בצורה נכונה, התגובה חייבת לכלול את השדות הבאים עם הערכים שצוינו:
-
recaptchaKeys: השדה לא יכול להיות ריק והוא מוגדר לפחות לאחת מהפלטפורמות הבאות: iOS, אינטרנט או Android. useSmsTollFraudProtection: הערך של השדה הזה צריך להיותtrue.-
phoneEnforcementState: הערך צריך להיותENFORCEאוAUDIT. -
tollFraudManagedRules: בשדה הזה, צריך להגדיר אתstartScoreעם ערך הסף שבחרתם, שחייב להיות בין0ל-0.9.
אחרת, צריך להגדיר מחדש את reCAPTCHA הגנה על SMS.
דוגמה לתשובה
{ "recaptchaConfig": { "recaptchaKeys": [ { "key": "projects/{your-project}/keys/{recaptcha-key}", "type": "WEB" }, { "type": "IOS" }, { "type": "ANDROID" } ], "phoneEnforcementState": "ENFORCE", "tollFraudManagedRules": [ { "startScore": 0.8, "action": "BLOCK" } ], "useSmsTollFraudProtection": true } } ```-
מוודאים שגרסאות ה-SDK נכונות.
אינטרנט
מעדכנים לגרסה האחרונה של ה-SDK לאתרים.
- התמיכה ב-reCAPTCHA לאימות באמצעות אימייל וסיסמה באפליקציות אינטרנט זמינה בגרסאות JavaScript SDK 9.20.0 ואילך.
- תמיכה ב-reCAPTCHA לאימות טלפונים באפליקציות אינטרנט זמינה בגרסאות 11 ואילך של JavaScript SDK.
אחרי שמשלבים את ה-SDK לאינטרנט באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ומפעיל הגנה על הספקים שהגדרתם.
Android
צריך לעדכן לגרסה האחרונה של Android SDK. תמיכה ב-reCAPTCHA לאימות באמצעות אימייל וסיסמה ולאימות באמצעות טלפון באפליקציות ל-Android זמינה ב-Android SDK מגרסה 23.1.0 ואילך.
בנוסף, כדי לתמוך ב-reCAPTCHA נדרשת רמת API 23 (Marshmallow) ומעלה ו-Android 6 ומעלה.
אחרי שמשלבים את Android SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את ההגדרה של reCAPTCHA ומחיל את ערכי הסף שהגדרתם לספקי השירות שהגדרתם.
מוסיפים את כלל ה-build הבא לקטע dependencies בקובץ
build.gradleברמת האפליקציה:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'חשוב להשתמש ב-reCAPTCHA SDK בגרסה 18.5.1 ואילך.
iOS
- מעדכנים לגרסה 11.6.0 ואילך של iOS SDK.
אחרי שמשלבים את iOS SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ומחיל את ערכי הסף שהגדרתם לספקי השירות שהגדרתם.
כדי לשלב את reCAPTCHA iOS SDK באפליקציה, אפשר לעיין במאמר בנושא הכנת סביבת iOS.
כדי לוודא ש-
-ObjCמופיע בדגלי המקשר, עוברים אל Target > Build Settings > All > Linking ומוודאים ש-Other Linker Flagsמופיע-ObjC.
מעקב אחרי מדדי reCAPTCHA להגנה על SMS ב-reCAPTCHA
כדי לוודא שתהליכי האימות מבוססי ה-SMS מוגנים, צריך לעקוב אחרי מדדי reCAPTCHA שהפרויקט שלכם פולט. לדוגמה, המדדים האלה יכולים לעזור לכם לקבוע אם הגדרתם נכון את השילוב של Identity Platform עם reCAPTCHA Enterprise API. הם גם יכולים לעזור לכם לשפר את סף הניקוד של תנועת המשתמשים.
כדי לוודא שהתכונה reCAPTCHA הגנה על SMS פועלת, בודקים את המדדים הבאים שהפרויקט פולט ל-Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_countidentitytoolkit.googleapis.com/recaptcha/token_countidentitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
מידע נוסף זמין במאמר מעקב אחרי מדדים של reCAPTCHA.
הפעלת reCAPTCHA הגנה על SMS
אחרי שמוודאים שהאפליקציה מקבלת תנועת משתמשים מקובלת, מפעילים את מצב reCAPTCHA ENFORCE כדי לחסום באופן פעיל בקשות תרמיתיות ולעזור בהגנה על המשתמשים.
כדי להפעיל את מצב ENFORCE בתהליכי אימות מבוססי-SMS בפרויקט או בדייר, משתמשים ב-Google APIs Explorer כדי לעדכן את הגדרות הפרויקט. לשם כך, מזינים את כתובת ה-URL הבאה של HTTP בחלון דפדפן חדש שבו אתם מחוברים ל- Google Cloud Console:
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":"true"}}}
מחליפים את PROJECT_ID במזהה הפרויקט.
שימוש ב-reCAPTCHA SMS defense עם הגנה מפני בוטים
אפשר להשתמש ב-reCAPTCHA הגנה על SMS בו-זמנית עם הגנה מפני בוטים. אם משתמשים בהגדרות שכוללות את שני אמצעי ההגנה, כדאי לשים לב לנקודות הבאות:
- אם הגדרתם את מצב האכיפה של אימות הטלפון ל-
AUDIT, Identity Platform יעביר בקשה אם היא עומדת לפחות באחת מההערכות. מומלץ לעקוב אחרי מדדי reCAPTCHA כדי לוודא שההגדרות של הגנה על SMS של reCAPTCHA ושל ההגנה מפני בוטים מוגדרות עם ציונים סבירים. - אם הגדרתם את מצב האכיפה של אימות הטלפון ל
ENFORCE, Identity Platform יעביר בקשה רק אם היא עומדת בשתי ההערכות, והבקשה תידחה בלי מעבר לשיטת אימות אחרת.
כדי להפעיל את שתי התכונות, צריך להשתמש ב-Google APIs Explorer כדי לעדכן את הגדרות הפרויקט:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
מחליפים את ENFORCE_MODE במצב שרוצים להגדיר לאכיפה של אימות טלפון באמצעות reCAPTCHA. הערכים התקפים הם OFF, AUDIT ו-ENFORCE.
כשמפעילים את ההגנה על SMS של reCAPTCHA בפעם הראשונה, מומלץ להגדיר את הפרמטר הזה לערך AUDIT ולוודא שתהליכי האימות מוגנים לפני שמגדירים אותו לערך ENFORCE. מידע נוסף על אופן הפעולה של המצבים זמין במאמר בנושא מצבי אכיפה של אימות טלפוני ב-reCAPTCHA.
השבתת הגנה על SMS של reCAPTCHA בזמן שימוש בהגנה מפני בוטים
אם אתם משתמשים בו-זמנית בהגנה באמצעות SMS של reCAPTCHA ובהגנה מפני בוטים, ואתם רוצים להשבית את ההגנה באמצעות SMS של reCAPTCHA בלי להשבית את ההגנה מפני בוטים, אתם יכולים להשתמש ב-Google APIs Explorer כדי לעדכן את הגדרות הפרויקט:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: 'false',
useSmsBotScore: 'true'
}
מחליפים את ENFORCE_MODE במצב שהגדרתם קודם לאכיפת אימות טלפוני באמצעות reCAPTCHA. הערך צריך להיות AUDIT או ENFORCE. מידע נוסף על אופן הפעולה של המצבים זמין במאמר בנושא מצבי אכיפה של אימות טלפוני ב-reCAPTCHA.
השבתת הגנה על SMS של reCAPTCHA
כדי להשבית את ההגנה על SMS של reCAPTCHA, משתמשים ב-Google APIs Explorer כדי לעדכן את הגדרות הפרויקט. לשם כך, מזינים את כתובת ה-URL מסוג HTTP הבאה בחלון חדש בדפדפן שבו אתם מחוברים למסוף Google Cloud :
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":"false"}}}
מחליפים את PROJECT_ID במזהה הפרויקט.
כדי להשבית את reCAPTCHA SMS defense בזמן שמשתמשים בהגנה מפני בוטים, אפשר לעיין במאמר השבתה של reCAPTCHA SMS defense בזמן שמשתמשים בהגנה מפני בוטים.