שימוש ב-Update API
סקירה כללית
באמצעות Update API, אפליקציות לקוח יכולות להוריד גרסאות מגובבות של רשימות Web Risk לאחסון במסד נתונים מקומי או בזיכרון. אחר כך אפשר לבדוק את כתובות ה-URL באופן מקומי. אם נמצאת התאמה במסד הנתונים המקומי, הלקוח שולח בקשה לשרתי Web Risk כדי לבדוק אם כתובת ה-URL כלולה ברשימות Web Risk.
עדכון של מסד הנתונים המקומי
כדי שהלקוחות יוכלו להישאר מעודכנים, הם צריכים לעדכן מעת לעת את רשימות Web Risk במסד הנתונים המקומי שלהם. כדי לחסוך ברוחב פס, הלקוחות מורידים את הקידומות של הגיבוב של כתובות ה-URL ולא את כתובות ה-URL הגולמיות. לדוגמה, אם כתובת ה-URL www.badurl.com/ נמצאת ברשימת הסיכונים באינטרנט, הלקוחות מורידים את הקידומת של הגיבוב SHA256 של כתובת ה-URL הזו ולא את כתובת ה-URL עצמה. ברוב המקרים, קידומות הגיבוב הן באורך 4 בייטים, כלומר עלות רוחב הפס הממוצעת של הורדת רשומה יחידה ברשימה היא 4 בייטים לפני הדחיסה.
כדי לעדכן את הרשימות של Web Risk במסד הנתונים המקומי, שולחים בקשת HTTP
GET לשיטה
threatLists.computeDiff:
- בקשת ה-HTTP
GETכוללת את שם הרשימה שצריך לעדכן, יחד עם אילוצים של הלקוח שמתייחסים למגבלות של הזיכרון ורוחב הפס. - התגובה של HTTP
GETמחזירה עדכון מלא או עדכון חלקי. התשובה יכולה גם להחזיר זמן המתנה מומלץ עד לפעולת חישוב ההפרש הבאה.
דוגמה: threatLists.computeDiff
בקשת HTTP GET
בדוגמה הבאה, מוצגות בקשות להבדלים ברשימת הסיכונים באינטרנט של תוכנות זדוניות. פרטים נוספים זמינים בקטע threatLists.computeDiff פרמטרים של שאילתות ובהסברים שמופיעים אחרי דוגמת הקוד.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
"https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY"
PowerShell
מריצים את הפקודה הבאה:
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
{
"recommendedNextDiff": "2020-01-08T19:41:45.436722194Z",
"responseType": "RESET",
"additions": {
"rawHashes": [
{
"prefixSize": 4,
"rawHashes": "AArQMQAMoUgAPn8lAE..."
}
]
},
"newVersionToken": "ChAIARAGGAEiAzAwMSiAEDABEPDyBhoCGAlTcIVL",
"checksum": {
"sha256": "wy6jh0+MAg/V/+VdErFhZIpOW+L8ulrVwhlV61XkROI="
}
}
Java
Python
רשימות Web Risk
השדה threatType מזהה את רשימת Web Risk. בדוגמה, מוצגות בקשות להבדלים ברשימת הסיכונים באינטרנט של תוכנות זדוניות.
טוקן גרסה
השדה versionToken מכיל את מצב הלקוח הנוכחי של רשימת Web Risk.
אסימוני הגרסה מוחזרים בשדה newVersionToken של התשובה threatLists.computeDiff.
לעדכונים ראשוניים, משאירים את השדה versionToken ריק.
מגבלות גודל
בשדה maxDiffEntries מצוין המספר הכולל של עדכונים שהלקוח יכול לנהל (בדוגמה, 2048). בשדה maxDatabaseEntries מציינים את המספר הכולל של הרשומות שמסד הנתונים המקומי יכול לנהל (בדוגמה, 4096). הלקוחות צריכים להגדיר מגבלות גודל כדי להגן על הזיכרון ועל מגבלות רוחב הפס, וכדי למנוע את הגידול ברשימה. מידע נוסף זמין במאמר בנושא אילוצים לעדכון).
סוגי דחיסה נתמכים
בשדה supportedCompressions מפורטים סוגי הדחיסה שהלקוח תומך בהם. בדוגמה, הלקוח תומך רק בנתונים גולמיים ולא דחוסים.
עם זאת, Web Risk תומך בסוגי דחיסה נוספים. מידע נוסף זמין במאמר בנושא דחיסה.
תגובת HTTP GET
בדוגמה הזו, התגובה מחזירה עדכון חלקי לרשימת Web Risk באמצעות סוג הדחיסה המבוקש.
גוף התשובה
גוף התגובה כולל את פרטי ההבדלים (סוג התגובה, התוספות וההסרות שיש להחיל על מסד הנתונים המקומי, טוקן הגרסה החדשה וסכום ביקורת).
בדוגמה, התגובה כוללת גם את הזמן המומלץ להפרש הבא. פרטים נוספים מופיעים בקטע threatLists.computeDiff גוף התגובה ובהסברים שמופיעים אחרי קטע הקוד לדוגמה.
{
"responseType" : "DIFF",
"recommendedNextDiff": "2019-12-31T23:59:59.000000000Z",
"additions": {
"compressionType": "RAW",
"rawHashes": [{
"prefixSize": 4,
"rawHashes": "rnGLoQ=="
}]
},
"removals": {
"rawIndices": {
"indices": [0, 2, 4]
}
},
"newVersionToken": "ChAIBRADGAEiAzAwMSiAEDABEAFGpqhd",
"checksum": {
"sha256": "YSgoRtsRlgHDqDA3LAhM1gegEpEzs1TjzU33vqsR8iM="
},
"recommendedNextDiff": "2019-07-17T15:01:23.045123456Z"
}הבדלים בין מסדי נתונים
השדה responseType יציין אם מדובר בעדכון חלקי (DIFF) או מלא (RESET). בדוגמה, מוחזרים הבדלים חלקיים, ולכן התשובה כוללת גם הוספות וגם הסרות. יכולות להיות כמה קבוצות של תוספות,
אבל רק קבוצה אחת של הסרות. מידע נוסף זמין במאמר בנושא השוואות בין מסדי נתונים.
טוקן של גרסה חדשה
בשדה newVersionToken מופיע אסימון הגרסה החדשה של רשימת Web Risk שעודכנה לאחרונה. הלקוחות צריכים לשמור את מצב הלקוח החדש כדי להשתמש בו בבקשות עדכון עתידיות (השדה versionToken בבקשת threatLists.computeDiff).
סכומי ביקורת
סכום הביקורת מאפשר ללקוחות לוודא שלא חל שיבוש במסד הנתונים המקומי. אם סיכום הביקורת לא תואם, הלקוח צריך לנקות את מסד הנתונים ולהנפיק מחדש עדכון עם שדה versionToken ריק. עם זאת, לקוחות שנמצאים במצב הזה עדיין צריכים לפעול בהתאם למרווחי הזמן לעדכונים. מידע נוסף זמין במאמר בנושא תדירות הבקשות.
ההשוואה הבאה המומלצת
השדה recommendedNextDiff מציין חותמת זמן שעד אליה הלקוח צריך להמתין לפני שליחת בקשת עדכון נוספת. שימו לב: יכול להיות שתקופת ההמתנה המומלצת תופיע בתגובה, ויכול להיות שלא. פרטים נוספים זמינים במאמר בנושא תדירות הבקשות.
בדיקת כתובות URL
כדי לבדוק אם כתובת URL מופיעה ברשימה של Web Risk, הלקוח צריך קודם לחשב את הגיבוב ואת קידומת הגיבוב של כתובת ה-URL. פרטים נוספים זמינים במאמר בנושא כתובות URL וגיבוב. לאחר מכן הלקוח שולח שאילתה למסד הנתונים המקומי כדי לבדוק אם יש התאמה. אם קידומת הגיבוב לא מופיעה במסד הנתונים המקומי, כתובת ה-URL נחשבת בטוחה (כלומר, היא לא מופיעה ברשימות של Web Risk).
אם קידומת הגיבוב קיימת במסד הנתונים המקומי (התנגשות של קידומת גיבוב ), הלקוח צריך לשלוח את קידומת הגיבוב לשרתי Web Risk לצורך אימות. השרתים יחזירו את כל הגיבובים המלאים בפורמט SHA 256 שמכילים את הקידומת הנתונה של הגיבוב. אם אחד מהגיבובים באורך מלא תואם לגיבוב באורך מלא של כתובת ה-URL הרלוונטית, כתובת ה-URL נחשבת ללא בטוחה. אם אף אחד מהגיבובים באורך מלא לא תואם לגיבוב באורך מלא של כתובת ה-URL הרלוונטית, כתובת ה-URL הזו נחשבת בטוחה.
במהלך הבדיקה, Google לא מקבלת מידע על כתובות ה-URL שאתם בודקים. Google לומדת את התחיליות של הגיבוב של כתובות URL, אבל התחיליות האלה לא מספקות הרבה מידע על כתובות ה-URL בפועל.
כדי לבדוק אם כתובת URL מופיעה ברשימת Web Risk, שולחים בקשת HTTP GET לשיטה hashes.search:
- בקשת ה-HTTP
GETכוללת את קידומת הגיבוב של כתובת ה-URL שרוצים לבדוק. - תגובת ה-HTTP
GETמחזירה את הגיבובים התואמים באורך מלא, יחד עם זמני התפוגה החיוביים והשליליים.
דוגמה: hashes.search
בקשת HTTP GET
בדוגמה הבאה, השמות של שתי רשימות של Web Risk וקידומת hash נשלחים להשוואה ולאימות. פרטים נוספים זמינים בקטע hashes.search פרמטרים של שאילתות ובהסברים שמופיעים אחרי דוגמת הקוד.
curl \ -H "Content-Type: application/json" \ "https://webrisk.googleapis.com/v1/hashes:search?key=YOUR_API_KEY&threatTypes=MALWARE&threatTypes=SOCIAL_ENGINEERING&hashPrefix=WwuJdQ%3D%3D"
Java
Python
רשימות Web Risk
השדה threatTypes מציין את הרשימות של Web Risk. בדוגמה, מזוהות שתי רשימות: MALWARE ו-SOCIAL_ENGINEERING.
קידומות גיבוב (Hash) של איומים
השדה hashPrefix מכיל את קידומת הגיבוב של כתובת ה-URL שרוצים לבדוק. השדה הזה חייב להכיל את קידומת הגיבוב המדויקת שמופיעה במסד הנתונים המקומי. לדוגמה, אם קידומת הגיבוב המקומית היא באורך 4 בייט, השדה hashPrefix צריך להיות באורך 4 בייט. אם קידומת הגיבוב המקומית הוארכה ל-7 בייט, השדה hashPrefix חייב להיות באורך 7 בייט.
תגובת HTTP GET
בדוגמה הבאה, התגובה מחזירה את האיומים התואמים, כולל רשימות Web Risk שהם תואמים להן, וגם את זמני התפוגה.
גוף התשובה
גוף התשובה כולל את פרטי ההתאמה (שמות הרשימות, הגיבובים באורך מלא ומשך השהייה במטמון). פרטים נוספים מופיעים בקטע hashes.search גוף התגובה ובהסברים שמופיעים אחרי קטע הקוד לדוגמה.
{
"threats": [{
"threatTypes": ["MALWARE"],
"hash": "WwuJdQx48jP-4lxr4y2Sj82AWoxUVcIRDSk1PC9Rf-4="
"expireTime": "2019-07-17T15:01:23.045123456Z"
}, {
"threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"],
"hash": "WwuJdQxaCSH453-uytERC456gf45rFExcE23F7-hnfD="
"expireTime": "2019-07-17T15:01:23.045123456Z"
},
}],
"negativeExpireTime": "2019-07-17T15:01:23.045123456Z"
}התאמות
השדה threats מחזיר גיבובים מלאים שתואמים לקידומת הגיבוב.
כתובות ה-URL שתואמות לגיבובים האלה נחשבות ללא בטוחות. אם לא נמצאה התאמה לקידומת הגיבוב, לא מוחזר דבר, וכתובת ה-URL שמתאימה לקידומת הגיבוב הזו נחשבת בטוחה.
מועד התפוגה
בשדות expireTime ו-negativeExpireTime מצוין עד מתי צריך להתייחס לגיבובים כלא בטוחים או כבטוחים, בהתאמה. פרטים נוספים זמינים במאמר בנושא שמירה במטמון.