הפעלת הגנה על סמס ב-reCAPTCHA לאימות מבוסס-SMS
במאמר הזה מוסבר איך להשתמש בהגנה על סמס של reCAPTCHA כדי להגן על תהליכים שמבוססים על SMS ב-Identity Platform, כמו אימות באמצעות הטלפון ואימות רב-שלבי, מפני הונאת תשלום קבוע ב-SMS (שנקראת גם התקפת SMS pumping). השילוב הזה עוזר למנוע מתנועת SMS לא מורשית להשפיע לרעה על המשתמשים והמשאבים שלכם.
סקירה כללית
אם האפליקציה שלכם מסתמכת על סמס לצורך אימות, מומלץ להפעיל את השילוב של הגנה על סמס ב-reCAPTCHA. אחרי שמפעילים את התכונה, אימות ב-Firebase ו-Identity Platform מפעילים באופן אוטומטי את התכונה "הגנה על סמס" של reCAPTCHA בכל פעם שמשתמש קצה מבקש הודעת סמס לאימות מהאפליקציה או מהאתר שלכם באמצעות הפעולות הבאות של phoneProvider:
| פעולה | Method | |
|---|---|---|
| הרשמה או כניסה באמצעות מספר טלפון | sendVerificationCode |
|
| רישום מספר טלפון לאימות רב-שלבי (MFA) | mfaSmsEnrollment |
|
| כניסה באמצעות מספר טלפון לאימות רב-שלבי (MFA) | mfaSmsSignIn |
לאחר מכן, מערכת reCAPTCHA מספקת לאימות ב-Firebase או ל-Identity Platform ציון סיכון שמציין את הסבירות להונאת תשלום קבוע ב-SMS למספר הטלפון של המשתמש. לאחר מכן, הניקוד הזה מושווה לסף שהגדרתם. אם הבקשה של המשתמש עוברת את הערכת הונאת התשלום הקבוע, נשלח קוד אימות ב-SMS. אם ציון הסיכון גבוה מהסף שהגדרתם, פלטפורמת הזהות חוסמת את הבקשה ולא שולחת הודעת SMS עם קוד אימות.
כשההגנה על סמס של reCAPTCHA מופעלת, לא צריך אימות חלופי ולא צריך להגדיר שיטות אימות נוספות לאפליקציה. עם זאת, מומלץ להגדיר את הגורם המאמת של reCAPTCHA לאפליקציות אינטרנט כדי לוודא ש-reCAPTCHA גרסה 2 זמינה אם תחליטו להשבית את ההגנה על סמס של reCAPTCHA.
כדי להבין איך פועלים הניקודים של הגנה על SMS ב-reCAPTCHA, קראו את המאמר פירוש הניקוד.
מידע נוסף על התכונה "הגנה על סמס" של reCAPTCHA זמין במאמר זיהוי ומניעה של הונאת סמס.
לפני שמתחילים
לפני שמפעילים את ההגנה על SMS של reCAPTCHA ב-Identity Platform, צריך לבצע את הפעולות הבאות:
מגדירים את הפרטים הבאים באפליקציה או באתר, לפי הצורך:
- כניסה באמצעות הטלפון למשתמשים.
- אימות רב-שלבי לאפליקציות לאינטרנט, ל-Android או ל-iOS.
מגדירים את אימות ב-Firebase לאפליקציה או לאתר, לפי הצורך:
- אינטרנט: הגדרת אימות באמצעות הטלפון
- iOS: הגדרת אימות באמצעות הטלפון
- Android: הגדרת אימות באמצעות הטלפון
הפעלת ההגנה על סמס של reCAPTCHA
מגדירים את האימות:
-
מפעילים את Cloud Shell במסוף Google Cloud .
יוצרים זהות בשירות:
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. \ --role=roles/identitytoolkit.serviceAgentמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
PROJECT_NUMBER: מספר החשבון של הפרויקט
-
-
מפעילים את reCAPTCHA Enterprise API בפרויקט.
מפעילים את ההגנה על סמס של reCAPTCHA בפרויקט:
נכנסים לדף reCAPTCHA במסוף Google Cloud .
מוודאים ששם הפרויקט מופיע בבורר המשאבים.
אם שם הפרויקט לא מופיע, לוחצים על בורר המשאבים ובוחרים את הפרויקט.
לוחצים על הגדרות.
בחלונית SMS defense, לוחצים על Configure.
לוחצים על המתג הפעלה ואז על שמירה.
כשמפעילים את ההגנה על סמס ב-reCAPTCHA, גם ההגנה על החשבון מופעלת, אם היא עדיין לא הופעלה.
יכול להיות שיעברו כמה דקות עד שההפעלה של הגנה על סמס ב-reCAPTCHA תתעדכן במערכות שלנו. אחרי שהשינוי יתעדכן, תתחילו לקבל תשובות שקשורות להגנה על סמס ב-reCAPTCHA כחלק מההערכות.
כדי להגדיר את הגדרות ההגנה על סמס של reCAPTCHA לפרויקט של אימות ב-Firebase או של Identity Platform, מבצעים את הפעולות הבאות:
בכתובת ה-URL הבאה, מחליפים את
PROJECT_IDואתSTART_SCORE:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.tollFraudManagedRules","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}
PROJECT_ID: מזהה הפרויקט שבו מופעלת פלטפורמת הזהות.
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. מפעילים את ה-API שלGetConfigבחלונית הצדדית כדי לאחזר את ההגדרות של reCAPTCHA.מוודאים שההגנה על סמס ב-reCAPTCHA מוגדרת בצורה נכונה:
אם הגדרת ה-reCAPTCHA נכונה, התגובה חייבת לכלול את השדות הבאים עם הערכים שצוינו:
recaptchaKeys: השדה לא יכול להיות ריק, והוא מוגדר לפחות לאחת מהפלטפורמות הבאות: iOS, אינטרנט או Android.useSmsTollFraudProtection: הערך של השדה הזה צריך להיותtrue.-
phoneEnforcementState: הערך צריך להיותENFORCE. tollFraudManagedRules: בשדה הזה, צריך להגדיר אתstartScoreעם הסף שבחרתם, שחייב להיות ערך בין0ל-0.9.
אם לא, צריך להגדיר מחדש את ההגנה על סמס ב-reCAPTCHA.
דוגמה לתשובה
{ "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 באימות באמצעות אימייל וסיסמה באפליקציות אינטרנט זמינה בגרסאות 9.20.0 ואילך של JavaScript SDK.
- התמיכה של reCAPTCHA באימות טלפוני באפליקציות אינטרנט זמינה ב-JavaScript SDK בגרסאות 11 ואילך.
אחרי שמשלבים את ה-SDK לאינטרנט באפליקציה, ה-SDK מאחזר באופן אוטומטי את ההגדרות האישיות של reCAPTCHA ומפעיל את ההגנה על הספקים שהגדרתם.
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 ואילך.
iOS
- מעדכנים ל-iOS SDK בגרסה 11.6.0 ואילך.
אחרי שמשלבים את iOS SDK באפליקציה, ה-SDK מאחזר באופן אוטומטי את הגדרות reCAPTCHA ואוכף את ערכי הסף שהגדרתם לספקים.
כדי לשלב את reCAPTCHA iOS SDK באפליקציה, קראו את המאמר הכנת סביבת iOS.
כדי לוודא ש-
-ObjCמופיע בדגלי המקשר, עוברים אל Target (יעד) > Build Settings (הגדרות build) > All (הכול) > Linking (קישור) ומוודאים ש-Other Linker Flagsמציג את-ObjC.
מעקב אחרי מדדי reCAPTCHA להגנה על סמס באמצעות reCAPTCHA
כדי לוודא שתהליכי האימות מבוססי ה-SMS מוגנים, עקבו אחרי המדדים של reCAPTCHA שהפרויקט שלכם מפיק. לדוגמה, המדדים האלה יכולים לעזור לכם לקבוע אם הגדרתם נכון את השילוב של Identity Platform עם reCAPTCHA Enterprise API. הם גם יכולים לעזור לכם לשפר את סף הניקוד של תנועת המשתמשים.
כדי לוודא שתכונת ההגנה על סמס של reCAPTCHA פועלת, בודקים את המדדים הבאים שהפרויקט שולח ל-Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_countidentitytoolkit.googleapis.com/recaptcha/token_countidentitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
מידע נוסף זמין במאמר מעקב אחרי מדדי reCAPTCHA.
שימוש בהגנה על סמס של reCAPTCHA עם הגנה מפני בוטים
אתם יכולים להשתמש בהגנה על סמס של reCAPTCHA במקביל להגנה מפני בוטים. אם שתי האפשרויות מופעלות והערך של phoneEnforcementState הוא ENFORCE, Identity Platform מעבירה בקשה רק אם היא עומדת בשתי ההערכות, והבקשה נסגרת במקרה שגיאה בלי לחזור לשיטת אימות אחרת.
כדי להפעיל את שתי התכונות, משתמשים ב-Google APIs Explorer כדי לעדכן את הגדרות הפרויקט:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
השבתת ההגנה על סמס של reCAPTCHA בזמן השימוש בהגנה מפני בוטים
אם אתם משתמשים גם בהגנה על סמס וגם בהגנה מפני בוטים של reCAPTCHA, ואתם רוצים להשבית את ההגנה על סמס של reCAPTCHA בלי להשבית את ההגנה מפני בוטים, השתמשו ב-Google APIs Explorer כדי לעדכן את הגדרות הפרויקט:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: false,
useSmsBotScore: true
}
כדי להשאיר את ההגנה מפני בוטים מופעלת בתהליכי אימות טלפוני, צריך להגדיר את phoneEnforcementState לערך ENFORCE ואת useSmsBotScore לערך true.
השבתת ההגנה על סמס של reCAPTCHA
כדי להשבית את כל ההגנה של reCAPTCHA בטלפון, כולל הגנה על סמס של 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.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.useSmsBotScore","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":false,"useSmsBotScore":false}}}
מחליפים את PROJECT_ID במזהה הפרויקט.
כדי להשבית את ההגנה על סמס ב-reCAPTCHA כשמשתמשים בהגנה מפני בוטים, קראו את המאמר השבתת ההגנה על סמס ב-reCAPTCHA כשמשתמשים בהגנה מפני בוטים.