وقتی کلاینتها تصمیم میگیرند از Google Safe Browsing نسخه ۵ در حالت بلادرنگ بدون نیاز به ذخیرهسازی استفاده کنند، کلاینت نیازی به نگهداری هیچ پایگاه داده محلی پایداری ندارد. با این حال، همچنان انتظار میرود که کلاینت یک حافظه پنهان محلی را نگهداری کند. چنین حافظه پنهان محلی نیازی به نگهداری در حافظه پایدار ندارد و در صورت فشار بر حافظه، میتوان آن را پاک کرد.
هر زمان که کلاینت بخواهد یک URL خاص را بررسی کند، همیشه برای انجام بررسی به سرور متصل میشود. این حالت مشابه حالتی است که کلاینتهای Lookup API نسخه ۴ ممکن است پیادهسازی کنند.
در مقایسه با حالت بلادرنگ، این حالت ممکن است از پهنای باند شبکه بیشتری استفاده کند، اما اگر برای کلاینت حفظ وضعیت محلی پایدار دشوار باشد، میتواند مناسبتر باشد.
روش بررسی URL در لحظه بدون پایگاه داده محلی
این روال یک URL واحد u را میگیرد و SAFE یا UNSAFE را برمیگرداند.
- فرض کنید
expressionsفهرستی از عبارات پسوند/پیشوند تولید شده توسط URLuباشند. - فرض کنید
expressionHashesیک لیست باشد که عناصر آن، هشهای SHA256 هر عبارت درexpressionsهستند. - فرض کنید
expressionHashPrefixesیک لیست باشد که عناصر آن، ۴ بایت اول هر هش درexpressionHashesهستند. - برای هر
expressionHashPrefixازexpressionHashPrefixes:-
expressionHashPrefixدر حافظه پنهان محلی جستجو کنید. - اگر ورودی ذخیره شده پیدا شد:
- تعیین کنید که آیا زمان فعلی از زمان انقضای آن بزرگتر است یا خیر.
- اگر بیشتر باشد:
- ورودی کش شدهی پیدا شده را از کش محلی حذف کن.
- با حلقه ادامه دهید.
- اگر بزرگتر نباشد:
- این
expressionHashPrefixخاص را ازexpressionHashPrefixesحذف کنید. - بررسی کنید که آیا هش کامل مربوطه در
expressionHashesدر ورودی ذخیره شده یافت میشود یا خیر. - در صورت یافتن،
UNSAFEرا برگردانید. - اگر پیدا نشد، به حلقه ادامه دهید.
- این
- اگر ورودی ذخیره شده در حافظه پنهان پیدا نشد، حلقه را ادامه دهید.
-
- ارسال
expressionHashPrefixesبه سرور مرور ایمن گوگل نسخه ۵ با استفاده از RPC SearchHashes یا متد REST hashes.search . اگر خطایی رخ داد (از جمله خطاهای شبکه، خطاهای HTTP و غیره)،SAFEرا برگردانید. در غیر این صورت، اجازه دهید responseresponseباشد که از سرور SB دریافت شده است، که لیستی از هشهای کامل به همراه برخی اطلاعات کمکی است که ماهیت تهدید (مهندسی اجتماعی، بدافزار و غیره) و همچنین زمان انقضای حافظه پنهانexpirationمشخص میکند. - برای هر
fullHashازresponse:- دستور
fullHashبه همراهexpirationدر حافظه پنهان محلی قرار دهید.
- دستور
- برای هر
fullHashازresponse:- فرض کنید
isFoundنتیجه یافتنfullHashدرexpressionHashesباشد. - اگر
isFoundبرابر با False باشد، حلقه را ادامه بده. - اگر
isFoundبرابر با True باشد، مقدارUNSAFEرا برمیگرداند.
- فرض کنید
- بازگشت
SAFE.
درست مانند حالت بلادرنگ ، این رویه دقیقاً نحوه ارسال پیشوندهای هش به سرور را مشخص نمیکند. به عنوان مثال، برای کلاینت قابل قبول است که تمام expressionHashPrefixes در یک درخواست واحد ارسال کند، و همچنین برای کلاینت قابل قبول است که هر پیشوند جداگانه در expressionHashPrefixes را در درخواستهای جداگانه به سرور ارسال کند (شاید به صورت موازی پیش برود). همچنین برای کلاینت قابل قبول است که پیشوندهای هش نامرتبط یا تصادفی تولید شده را همراه با پیشوندهای هش در expressionHashPrefixes ارسال کند، تا زمانی که تعداد پیشوندهای هش ارسال شده در یک درخواست واحد از 30 تجاوز نکند.