במסמך הזה מוסבר איך להשתמש בהגנה על SMS כדי לזהות ולמנוע מתקפות של ניפוח תנועה ב-SMS בעסקים שמסתמכים על SMS לאימות דו-שלבי (2FA) או לאימות טלפוני, שהם יעד פוטנציאלי להונאות שקשורות לחיוב על שימוש ב-SMS.
אימות מבוסס-SMS (2FA וכניסה) הוא תקן בתעשייה לאבטחת כניסה והרשמה, אבל הוא לא מספק הגנה מפני הונאת תשלום על הודעות SMS או הונאת הצפה של הודעות SMS. לפני ששולחים SMS, הגנה על סמס מספקת לכם ציון סיכון שמציין את הסבירות שמספר הטלפון הזה יבצע הונאת תשלום ב-SMS. על סמך הניקוד הזה, אתם יכולים לאשר או לחסום הודעות SMS הונאה לפני שהן נשלחות לספק ה-SMS.
ציון הסיכון של הגנה על סמס פועל באופן הפוך בהשוואה לציון הגלובלי של reCAPTCHA. ציון סיכון של 0.0 להגנה על הודעות SMS מצביע על רמת ודאות נמוכה לגבי הונאת חיובים על הודעות SMS; ציון סיכון של 1.0 מצביע על רמת ודאות גבוהה לגבי הונאת חיובים על הודעות SMS. מידע נוסף על ניקוד reCAPTCHA זמין במאמר הסבר על הערכות לאתרים. אם אתם משתמשים באימות ב-Firebase או ב-Identity Platform, תוכלו לעיין במסמכי התיעוד של Identity Platform.
מידע נוסף זמין בבלוג בנושא הגנה על הודעות SMS.
לפני שמתחילים
בהתאם לכך שאתם משתמשים קיימים ב-reCAPTCHA או שאתם משתמשים חדשים, פועלים לפי ההוראות בכרטיסייה המתאימה:
משתמש קיים ב-reCAPTCHA
אם אתם משתמשים קיימים ב-reCAPTCHA, אז הפעילו את התכונה הגנה על סמס בפרויקט שלכם ב- Google Cloud :
נכנסים לדף reCAPTCHA במסוף Google Cloud .
מוודאים ששם הפרויקט מופיע בבורר המשאבים.
אם שם הפרויקט לא מופיע, לוחצים על בורר המשאבים ובוחרים את הפרויקט.
לוחצים על הגדרות.
בחלונית הגנה על SMS, לוחצים על הגדרה.
לוחצים על המתג הפעלה ואז על שמירה.
יכול להיות שיחלפו כמה דקות עד שהפעלת ההגנה מפני הודעות SMS תתעדכן במערכות שלנו. אחרי שהפעלת התכונה תתעדכן במערכות שלנו, תתחילו לקבל תשובות שקשורות להגנה על סמס כחלק מההערכות.
משתמש חדש ב-reCAPTCHA
אם אתם חדשים ב-reCAPTCHA, אתם צריכים:
-
כדי לשלב את reCAPTCHA, צריך לפעול לפי השלבים הבאים בהתאם לסוג הפלטפורמה שבה רוצים להשתמש בהגנה על סמס: אתר או אפליקציה לנייד:
אתר
אפליקציה לנייד
- יצירת מפתח מבוסס-ניקוד לאפליקציה לנייד
- הטמעה של reCAPTCHA באפליקציית iOS או באפליקציית Android
- מפעילים את ההגנה על סמס בפרויקט Google Cloud :
נכנסים לדף reCAPTCHA במסוף Google Cloud .
מוודאים ששם הפרויקט מופיע בבורר המשאבים.
אם שם הפרויקט לא מופיע, לוחצים על בורר המשאבים ובוחרים את הפרויקט.
לוחצים על הגדרות.
בחלונית הגנה על SMS, לוחצים על הגדרה.
לוחצים על המתג הפעלה ואז על שמירה.
יכול להיות שיחלפו כמה דקות עד שהפעלת ההגנה מפני הודעות SMS תתעדכן במערכות שלנו. אחרי שהפעלת התכונה תתעדכן במערכות שלנו, תתחילו לקבל תשובות שקשורות להגנה על סמס כחלק מההערכות.
יצירת בדיקה עם מספר הטלפון
כדי להגן על סמס, צריך ליצור בדיקות באמצעות הטוקן שנוצר על ידי הפונקציה execute() ומספר הטלפון, באמצעות ספריות הלקוח של reCAPTCHA או ה-API בארכיטקטורת REST מהבק-אנד.
במאמר הזה נסביר איך ליצור הערכה באמצעות API בארכיטקטורת REST. במאמר יצירת הערכות מוסבר איך ליצור הערכה באמצעות ספריות לקוח.
לפני שיוצרים כלי הערכה, צריך לבצע את הפעולות הבאות:
מגדירים אימות ל-Fraud Defense.
שיטת האימות שתבחרו תלויה בסביבה שבה מוגדרת התכונה 'הגנה מפני הונאות'. הטבלה הבאה עוזרת לכם לבחור את שיטת האימות המתאימה ואת הממשק הנתמך להגדרת האימות:
סביבה ממשק שיטת אימות Google Cloud - REST
- ספריות לקוח
להשתמש בחשבונות שירות שמצורפים. באחסון מקומי או אצל ספק אחר של שירותי ענן REST משתמשים במפתחות API או באיחוד שירותי אימות הזהות של עומסי עבודה. אם אתם רוצים להשתמש במפתחות API, מומלץ לאבטח אותם על ידי החלת הגבלות על מפתחות API.
ספריות לקוח מומלץ להשתמש במשאבים הבאים:
- ב-Python או ב-Java, משתמשים במפתחות API או באיחוד שירותי אימות הזהות של עומסי עבודה.
אם אתם רוצים להשתמש במפתחות API, מומלץ לאבטח אותם על ידי החלת הגבלות על מפתחות API.
- בשפות אחרות, אפשר להשתמש באיחוד שירותי אימות הזהויות של עומסי עבודה.
צריך לבחור מזהה חשבון יציב
accountIdשהמשתמש לא משנה לעיתים קרובות, ולספק אותו להערכה בשיטהprojects.assessments.create. למזהה החשבון הקבוע הזה צריך להיות אותו ערך בכל האירועים שקשורים לאותו משתמש. אפשר לספק את הפרטים הבאים כמזהה החשבון:מזהי משתמשים
אם אפשר לשייך כל חשבון באופן ייחודי לשם משתמש, לכתובת אימייל או למספר טלפון יציבים, אפשר להשתמש בהם כ
accountId. כשאתם מספקים מזהים כאלה שמשמשים בכמה אתרים (מזהים שאפשר לעשות בהם שימוש חוזר באתרים שונים), התכונה 'הגנה מפני הונאה' משתמשת במידע הזה כדי לשפר את ההגנה על חשבונות המשתמשים שלכם על סמך מודלים שמתבססים על נתונים מכמה אתרים. המערכת מסמנת מזהים של חשבונות שנעשה בהם שימוש לרעה, ומשתמשת בידע על דפוסי שימוש לרעה בכמה אתרים שקשורים למזהים האלה.לחלופין, אם יש לכם מזהה משתמש פנימי שמשויך באופן ייחודי לכל חשבון, אתם יכולים לספק אותו כ
accountId.גיבוב או הצפנה
אם אין לכם מזהה משתמש פנימי שמשויך באופן ייחודי לכל חשבון, אתם יכולים להפוך כל מזהה יציב למזהה חשבון אטום שספציפי לאתר. עדיין נדרש מזהה כזה כדי שמערכת ההגנה על החשבון של Fraud Defense תוכל להבין את דפוסי הפעילות של המשתמשים ולזהות התנהגות חריגה, אבל הוא לא משותף עם אתרים אחרים.
בוחרים מזהה חשבון יציב כלשהו והופכים אותו לאטום לפני השליחה אל Fraud Defense באמצעות הצפנה או גיבוב:
הצפנה (מומלץ): הצפנה של מזהה החשבון באמצעות שיטת הצפנה דטרמיניסטית שמפיקה טקסט מוצפן יציב. הוראות מפורטות זמינות במאמר בנושא הצפנת נתונים באופן דטרמיניסטי. כשבוחרים בהצפנה סימטרית במקום בגיבוב, לא צריך לשמור מיפוי בין מזהי המשתמשים לבין מזהי המשתמשים האטומים התואמים. מפענחים את המזהים האטומים שמוחזרים על ידי Fraud Defense כדי להפוך אותם למזהה המשתמש.
גיבוב: מומלץ לגבב את מזהה החשבון באמצעות שיטת SHA256-HMAC עם מלח מותאם אישית לפי בחירתכם. מכיוון שגיבוב הוא חד-כיווני בלבד, צריך לשמור מיפוי בין הגיבובים שנוצרו לבין מזהי המשתמשים, כדי שתוכלו למפות את מזהה החשבון המגובב שמוחזר בחזרה לחשבונות המקוריים.
מוסיפים את הפרמטר accountId ואת מספר הטלפון בפורמט E.164 כUserId כדי לאמת בהערכה בשיטה projects.assessments.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- TOKEN: הטוקן שמוחזר מהקריאה ל-
grecaptcha.enterprise.execute(). - KEY_ID: המפתח שמבוסס על ניקוד שהתקנתם באתר.
- ACCOUNT_ID: מזהה של חשבון משתמש שהוא ייחודי לאתר שלכם.
- PHONE_NUMBER: מספר הטלפון שצריך לבדוק אם הוא זדוני. מספר הטלפון חייב להיות בפורמט E.164, ואסור שהוא יהיה מגובב או מוצפן.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
גוף בקשת JSON:
{
"event": {
"token": "TOKEN",
"siteKey": "KEY_ID",
"userInfo": {
"accountId": "ACCOUNT_ID",
"userIds": [
{
"phoneNumber": "PHONE_NUMBER"
}
]
}
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"event": {
…
},
"name": "ASSESSMENT_ID",
"phoneFraudAssessment": {
"smsTollFraudVerdict": {
"risk": 0.3
}
}
}
התשובה שתקבלו כוללת את הניקוד risk בשדה phoneFraudAssessment.smsTollFraudVerdict . ככל שהציון גבוה יותר, כך גדל הסיכון שמספר הטלפון הוא בעייתי. ככל שהציון נמוך יותר, כך גדל הסיכוי שמספר הטלפון הוא לגיטימי.
הפעולות שתבצעו על סמך ההערכה הן באחריותכם.
כדי לבצע את השילוב הפשוט ביותר, אתם יכולים להגדיר ערכי סף ב-phoneFraudAssessment.smsTollFraudVerdict.risk כדי לתרום להחלטה.
הוספת הערה למבדק
כדי לעקוב אחרי תנועת ה-SMS ולשפר את זיהוי ההונאות, אתם צריכים להוסיף הערות להערכות תוך 10 דקות אחרי שליחת ה-SMS או אחרי שמספר הטלפון אומת בהצלחה.
כדי להוסיף הערה להערכה, שולחים בקשה לשיטה
projects.assessments.annotate
עם מזהה ההערכה. בגוף הבקשה, צריך לכלול את מספר הטלפון בפורמט E.164 בשדה phoneAuthenticationEvent.
כדי להוסיף הערה להערכה:
קובעים את המידע והתוויות שרוצים להוסיף בגוף הבקשה ב-JSON, בהתאם לתרחיש השימוש.
בטבלה הבאה מפורטים התוויות והערכים שאפשר להשתמש בהם כדי להוסיף הערות לאירועים:
תווית תיאור דוגמה לבקשה reasonsחובה. תווית שתעזור לכם לבצע את ההערכות.
פרטי האירוע בזמן אמת מופיעים בתווית
reasonsתוך כמה שניות או דקות אחרי האירוע, כי הם משפיעים על הזיהוי בזמן אמת.ערכים אפשריים:
-
INITIATED_TWO_FACTOR: נשלח קוד אימות באמצעות SMS. -
PASSED_TWO_FACTOR: קוד האימות אומת בהצלחה. -
FAILED_TWO_FACTOR: קוד האימות לא תקין.
{ "reasons": ["INITIATED_TWO_FACTOR"], "phoneAuthenticationEvent": { "phoneNumber": "+18005550175" } }annotationזה שינוי אופציונלי. תווית שמציינת את הלגיטימיות של ההערכות.
צריך לספק עובדות לגבי אירועי כניסה ורישום כדי לאמת או לתקן את הערכות הסיכון בתווית
annotation.הערכים האפשריים:
LEGITIMATEאוFRAUDULENT.מומלץ לשלוח את המידע הזה כמה שניות או דקות אחרי האירוע, כי הוא משפיע על הזיהוי בזמן אמת.
{ "annotation": "LEGITIMATE" }-
יוצרים בקשת הערה עם התוויות המתאימות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- ASSESSMENT_ID: הערך של השדה
nameשמוחזר מהקריאהprojects.assessments.create. - ANNOTATION: אופציונלי. תווית שמציינת אם הבדיקה לגיטימית או שמקורה בתרמית.
- REASONS: סיבות לתמיכה בהערה. רשימת הערכים האפשריים מופיעה במאמר ערכי הסיבות.
- PHONE_NUMBER: מספר הטלפון שנבדק. מספר הטלפון חייב להיות בפורמט E.164, ואסור שהוא יהיה מגובב או מוצפן.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
גוף בקשת JSON:
{ "annotation": ANNOTATION, "reasons": REASONS, "phoneAuthenticationEvent": { "phoneNumber": "PHONE_NUMBER" } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate" | Select-Object -Expand Contentאמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.
- ASSESSMENT_ID: הערך של השדה