הפעלת 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) ולהעביר אותו לפעולות הבאות של אימות הטלפון:

  • verifyPhoneNumber
  • signInWithPhoneNumber
  • linkWithPhoneNumber
  • reauthenticateWithPhoneNumber
בלי מאמת reCAPTCHA, ‏ Identity Platform לא יכול להפעיל את reCAPTCHA גרסה 2 ויחזיר את הערך 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).
מידע נוסף על הגדרת אימות אפליקציות ל-Android זמין במאמר הפעלת אימות אפליקציות בתיעוד של Firebase.

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, צריך לבצע את המשימות הבאות:

הפעלת הגנה על SMS באמצעות reCAPTCHA

  1. מגדירים את האימות:

    1. במסוף Google Cloud , מפעילים את Cloud Shell.

      הפעלת Cloud Shell

    2. יוצרים זהות בשירות:

      gcloud beta services identity create \
          --service=identitytoolkit.googleapis.com \
          --project=PROJECT_ID
      

      מחליפים את PROJECT_ID במזהה הפרויקט.

    3. מקצים את התפקיד 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: מספר חשבון הפרויקט
  2. מפעילים את reCAPTCHA Enterprise API בפרויקט.

  3. מפעילים את reCAPTCHA הגנה על SMS בפרויקט:

    1. נכנסים לדף reCAPTCHA במסוף Google Cloud .

      מעבר אל reCAPTCHA

    2. מוודאים ששם הפרויקט מופיע בבורר המשאבים.

      אם שם הפרויקט לא מופיע, לוחצים על בורר המשאבים ובוחרים את הפרויקט.

    3. לוחצים על הגדרות.

    4. בחלונית הגנה על SMS, לוחצים על הגדרה.

    5. לוחצים על המתג הפעלה ואז על שמירה.

    כשמפעילים את reCAPTCHA SMS defense, מופעל גם Account Defender, אם הוא לא הופעל עדיין.

    יכול להיות שיחלפו כמה דקות עד שההפעלה של reCAPTCHA הגנה על SMS תתעדכן במערכות שלנו. אחרי ההפצה, תתחילו לקבל תגובות שקשורות ל-reCAPTCHA הגנה על SMS כחלק מההערכות.

  4. כדי להגדיר את ההגדרות של reCAPTCHA להגנה על SMS בפרויקט של אימות ב-Firebase או של Identity Platform:

    1. בכתובת ה-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 לא יישלחו לאזורים בסיכון גבוה.

    2. מזינים את כתובת ה-URL בחלון חדש בדפדפן שבו מחוברים למסוף Google Cloud .

  5. אם אתם משתמשים ב-Identity Platform באינטרנט או ב-Android, אתם יכולים לרשום את האפליקציה שלכם ממסוף Firebase:

  6. אימות ההגדרה:

    • מאחזרים את פרטי ההגדרה של reCAPTCHA:

      {replace-your-project} עם projectId או projectNumber. מריצים את GetConfig API בחלונית הצדדית כדי לאחזר את ההגדרה של reCAPTCHA.

    • בודקים שהגדרתם את reCAPTCHA SMS defense בצורה נכונה:

      1. אם הגדרתם את 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
            }
          }
          ```
        
  7. מוודאים שגרסאות ה-SDK נכונות.

    אינטרנט

    מעדכנים לגרסה האחרונה של ה-SDK לאתרים.

    • התמיכה ב-reCAPTCHA לאימות באמצעות אימייל וסיסמה באפליקציות אינטרנט זמינה בגרסאות JavaScript SDK 9.20.0 ואילך.
    • תמיכה ב-reCAPTCHA לאימות טלפונים באפליקציות אינטרנט זמינה בגרסאות 11 ואילך של JavaScript SDK.

    אחרי שמשלבים את ה-SDK לאינטרנט באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ומפעיל הגנה על הספקים שהגדרתם.

    Android

    1. צריך לעדכן לגרסה האחרונה של Android SDK. תמיכה ב-reCAPTCHA לאימות באמצעות אימייל וסיסמה ולאימות באמצעות טלפון באפליקציות ל-Android זמינה ב-Android SDK מגרסה 23.1.0 ואילך.

      בנוסף, כדי לתמוך ב-reCAPTCHA נדרשת רמת API‏ 23 (Marshmallow) ומעלה ו-Android 6 ומעלה.

      אחרי שמשלבים את Android SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את ההגדרה של reCAPTCHA ומחיל את ערכי הסף שהגדרתם לספקי השירות שהגדרתם.

    2. מוסיפים את כלל ה-build הבא לקטע dependencies בקובץ build.gradle ברמת האפליקציה:

      implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
      

      חשוב להשתמש ב-reCAPTCHA SDK בגרסה 18.5.1 ואילך.

    iOS

    1. מעדכנים לגרסה 11.6.0 ואילך של iOS SDK.

    אחרי שמשלבים את iOS SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ומחיל את ערכי הסף שהגדרתם לספקי השירות שהגדרתם.

    1. כדי לשלב את reCAPTCHA iOS SDK באפליקציה, אפשר לעיין במאמר בנושא הכנת סביבת iOS.

    2. כדי לוודא ש--ObjC מופיע בדגלי המקשר, עוברים אל Target > Build Settings > All > Linking ומוודאים ש-Other Linker Flags מופיע -ObjC.

מעקב אחרי מדדי reCAPTCHA להגנה על SMS ב-reCAPTCHA

כדי לוודא שתהליכי האימות מבוססי ה-SMS מוגנים, צריך לעקוב אחרי מדדי reCAPTCHA שהפרויקט שלכם פולט. לדוגמה, המדדים האלה יכולים לעזור לכם לקבוע אם הגדרתם נכון את השילוב של Identity Platform עם reCAPTCHA Enterprise API. הם גם יכולים לעזור לכם לשפר את סף הניקוד של תנועת המשתמשים.

כדי לוודא שהתכונה reCAPTCHA הגנה על SMS פועלת, בודקים את המדדים הבאים שהפרויקט פולט ל-Cloud Monitoring:

מידע נוסף זמין במאמר מעקב אחרי מדדים של 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 בזמן שמשתמשים בהגנה מפני בוטים.

המאמרים הבאים