כשלקוחות בוחרים להשתמש בגרסה 5 של הגלישה הבטוחה של Google במצב בזמן אמת ללא אחסון, הלקוח לא צריך לתחזק מסד נתונים מקומי קבוע. עם זאת, הלקוח עדיין נדרש לשמור מטמון מקומי. המטמון המקומי הזה לא צריך להיות באחסון קבוע, ויכול להיות שהוא יימחק אם יש עומס על הזיכרון.
בכל פעם שהלקוח רוצה לבדוק כתובת URL מסוימת, הוא מתחבר לשרת כדי לבצע את הבדיקה. המצב הזה דומה למה שלקוחות של v4 Lookup API עשויים להטמיע.
בהשוואה למצב 'בזמן אמת', במצב הזה יכול להיות שימוש רב יותר ברוחב הפס של הרשת, אבל הוא עשוי להתאים יותר אם ללקוח לא נוח לשמור על מצב מקומי מתמשך.
הליך בדיקת כתובות URL בזמן אמת ללא מסד נתונים מקומי
הפרוצדורה הזו מקבלת כתובת URL אחת u ומחזירה SAFE או UNSAFE.
-
expressionsהיא רשימה של ביטויי סיומת או תחילית שנוצרו על ידי כתובת ה-URLu. -
expressionHashesהיא רשימה שבה כל רכיב הוא גיבוב SHA256 של כל ביטוי ב-expressions. -
expressionHashPrefixesהיא רשימה שבה הרכיבים הם 4 הבייטים הראשונים של כל גיבוב ב-expressionHashes. - לכל
expressionHashPrefixמתוךexpressionHashPrefixes:- מחפשים את
expressionHashPrefixבמטמון המקומי. - אם נמצאה רשומה במטמון:
- הפונקציה קובעת אם השעה הנוכחית גדולה משעת התפוגה.
- אם הוא גדול יותר:
- מסירים את הערך שנמצא במטמון מהמטמון המקומי.
- ממשיכים עם הלולאה.
- אם הוא לא גדול יותר:
- הסרת
expressionHashPrefixהספציפי הזה מהחשבוןexpressionHashPrefixes. - בודקים אם הגיבוב המלא התואם ב-
expressionHashesנמצא ברשומה שבמטמון. - אם נמצא, מחזירה
UNSAFE. - אם לא נמצאה רשומה, ממשיכים בלולאה.
- הסרת
- אם לא נמצאה רשומה במטמון, ממשיכים בלולאה.
- מחפשים את
- שולחים את
expressionHashPrefixesלשרת של הגלישה הבטוחה של Google בגרסה 5 באמצעות RPC SearchHashes או שיטת REST hashes.search. אם אירעה שגיאה (כולל שגיאות רשת, שגיאות HTTP וכו'), מחזיריםSAFE. אחרת, התגובה היאresponseשהתקבלה משרת ה-SB, שהיא רשימה של גיבובים מלאים יחד עם מידע עזר שמזהה את אופי האיום (הנדסה חברתית, תוכנות זדוניות וכו'), וגם את זמן התפוגה של המטמוןexpiration. - לכל
fullHashמתוךresponse:- הוספה של
fullHashלמטמון המקומי, יחד עםexpiration.
- הוספה של
- לכל
fullHashמתוךresponse:-
isFoundהיא התוצאה של חיפושfullHashב-expressionHashes. - אם הערך של
isFoundהוא False, ממשיכים בלולאה. - אם
isFoundהוא True, הפונקציה מחזירה את הערךUNSAFE.
-
- החזרה
SAFE.
בדומה למצב בזמן אמת, בהליך הזה לא מצוין בדיוק איך לשלוח את קידומות הגיבוב לשרת. לדוגמה, מקובל שהלקוח ישלח את כל הקידומות expressionHashPrefixes בבקשה אחת, ומקובל גם שהלקוח ישלח כל קידומת בנפרד בבקשות נפרדות לשרת (אולי במקביל).expressionHashPrefixes מותר גם לשלוח קידומות גיבוב לא קשורות או שנוצרו באופן אקראי יחד עם קידומות הגיבוב ב-expressionHashPrefixes, כל עוד מספר קידומות הגיבוב שנשלחות בבקשה אחת לא עולה על 30.