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