מסדי נתונים מקומיים

המסמך הזה רלוונטי לשיטה הבאה: Update API.

הגדרת מסד נתונים

לקוחות שמשתמשים ב-Update API נדרשים להגדיר מסד נתונים מקומי ולבצע הורדה ראשונית של רשימות Web Risk שהם רוצים לעבוד איתן. מידע נוסף על ביצוע האחזור הראשוני מפורט בקטע עדכונים מלאים שבהמשך.

עדכונים של מסדי נתונים

כדי להבטיח הגנה מפני האיומים העדכניים ביותר, מומלץ מאוד ללקוחות לעדכן באופן קבוע את רשימות Web Risk המקומיות שלהם באמצעות השיטה threatLists.computeDiff.

threatLists.computeDiff בבקשה מצוינת הרשימה שרוצים לעדכן. אם יש ללקוחות מגבלות זיכרון או רוחב פס, הם יכולים גם להשתמש בבקשה כדי להגדיר אילוצים לעדכון (ראו אילוצים לעדכון).

הפונקציה threatLists.computeDiff response מחזירה עדכון מלא או עדכון חלקי לכל רשימה, כמו שמוסבר בהמשך.

עדכונים מלאים

עדכונים מלאים מוחזרים כשהלקוח משאיר את השדה versionToken בבקשת threatLists.computeDiff ריק, או כשהשרת קובע שנדרש עדכון מלא. בעדכונים מלאים, מוחזרים רק תוספות. הלקוח אמור לנקות את מסד הנתונים המקומי לפני החלת העדכונים וביצוע בדיקת האימות.

מצב ריק

עדכונים מלאים מוחזרים כשהלקוח שולח את הבקשה הראשונית לרשימה. במקרה כזה, השדה versionToken בבקשה נשאר ריק (כי אין ערך לספק), והשדה newVersionToken בתגובה מחזיר את המצב ההתחלתי של הרשימה המקומית. עדכונים מלאים מוחזרים גם אם הלקוח משאיר את השדה versionToken ריק בכוונה בבקשות הבאות. הפעולה הזו תאלץ עדכון מלא ותחזיר מצב חדש בשדה newVersionToken של התגובה.

החלטת השרת

לפעמים, השרת של Web Risk מחזיר עדכון מלא כשלקוח ביקש רק עדכון חלקי. זה יכול לקרות כשהלקוח מוריד בהתחלה גרסה קטנה של הרשימה ואז מעדכן לגרסה גדולה יותר של הרשימה. השרת פשוט יחזיר עדכון מלא עם הרשימה כולה. מצב כזה יכול לקרות גם אם הלקוח לא הוריד נתונים במשך זמן רב ומבקש עדכון חלקי. במקרה כזה, השרת פשוט יחזיר עדכון מלא עם הרשימה כולה.

עדכונים חלקיים

עדכונים חלקיים מוחזרים כשהלקוח מספק ערך לשדה versionToken בבקשה threatLists.computeDiff (החריג, כפי שצוין למעלה, הוא כשהשרת קובע שנדרש עדכון מלא). בעדכונים חלקיים, המערכת מחזירה גם תוספות וגם הסרות. הלקוח מעדכן את הרשימות במסד הנתונים המקומי (מחיל את ההסרות לפני ההוספות) ואז מבצע את בדיקת האימות.

הוספות

התוספות הן קידומות גיבוב SHA256 שצריך להוסיף למסד הנתונים המקומי. רוב הקידומות של הגיבוב הן באורך 4 בייטים, אבל חלק מהקידומות יכולות להיות באורך של 4 עד 32 בייטים. לכן, יכול להיות שיוחזרו כמה קבוצות של תוספות. לדוגמה, קבוצה אחת שמכילה את הקידומות של 4 בייטים וקבוצה אחת שמכילה את הקידומות של 5 בייטים.

אם הלקוח תומך בדחיסה, אפשר לדחוס את התגובה באמצעות דחיסת Rice. עם זאת, רק קידומות של גיבובים (hash) באורך 4 בייט נדחסות. קידומות ארוכות יותר של גיבוב נשלחות תמיד בפורמט גולמי לא דחוס. פרטים נוספים זמינים במאמר בנושא דחיסה.

הסרות

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

אם הלקוח תומך בדחיסה, הפונקציה מחזירה 'גיבובים של RICE' ו'אינדקסים של RICE'. אם הדחיסה לא נתמכת, המערכת מחזירה את הערכים raw hashes ו-raw indices. פרטים נוספים זמינים במאמר בנושא דחיסה.

בדיקות אימות

כשמוחזרת התגובה threatLists.computeDiff, עם עדכון מלא או עדכון חלקי, הלקוח אמור לבצע בדיקת אימות.

הלקוח מעדכן קודם את הרשימות במסד הנתונים המקומי (הסרת הרשומות מתבצעת לפני הוספת הרשומות). לאחר מכן הלקוח מחשב את הגיבוב SHA256 של הרשימה המקומית (שמסודרת לפי סדר מילוני) ומשווה אותו לסיכום הביקורת שמוחזר בתגובה. אם שני הערכים שווים, רשימת Web Risk נחשבת ל "נכונה".

אם שני הערכים לא שווים, הרשימה של Web Risk נחשבת כ'פגומה'. הלקוח צריך לנקות את הרשימה ממסד הנתונים ולהנפיק עדכון שני עם השדה versionToken שמוגדר כמחרוזת ריקה. כך יתבצע עדכון מלא ויוחזרו רשימה ומצב חדשים לגמרי.