No Storage Real Time Mode

وقتی کلاینت‌ها تصمیم می‌گیرند از Google Safe Browsing نسخه ۵ در حالت بلادرنگ بدون نیاز به ذخیره‌سازی استفاده کنند، کلاینت نیازی به نگهداری هیچ پایگاه داده محلی پایداری ندارد. با این حال، همچنان انتظار می‌رود که کلاینت یک حافظه پنهان محلی را نگهداری کند. چنین حافظه پنهان محلی نیازی به نگهداری در حافظه پایدار ندارد و در صورت فشار بر حافظه، می‌توان آن را پاک کرد.

هر زمان که کلاینت بخواهد یک URL خاص را بررسی کند، همیشه برای انجام بررسی به سرور متصل می‌شود. این حالت مشابه حالتی است که کلاینت‌های Lookup API نسخه ۴ ممکن است پیاده‌سازی کنند.

در مقایسه با حالت بلادرنگ، این حالت ممکن است از پهنای باند شبکه بیشتری استفاده کند، اما اگر برای کلاینت حفظ وضعیت محلی پایدار دشوار باشد، می‌تواند مناسب‌تر باشد.

روش بررسی URL در لحظه بدون پایگاه داده محلی

این روال یک URL واحد u را می‌گیرد و SAFE یا UNSAFE را برمی‌گرداند.

  1. فرض کنید expressions فهرستی از عبارات پسوند/پیشوند تولید شده توسط URL u باشند.
  2. فرض کنید expressionHashes یک لیست باشد که عناصر آن، هش‌های SHA256 هر عبارت در expressions هستند.
  3. فرض کنید expressionHashPrefixes یک لیست باشد که عناصر آن، ۴ بایت اول هر هش در expressionHashes هستند.
  4. برای هر expressionHashPrefix از expressionHashPrefixes :
    1. expressionHashPrefix در حافظه پنهان محلی جستجو کنید.
    2. اگر ورودی ذخیره شده پیدا شد:
      1. تعیین کنید که آیا زمان فعلی از زمان انقضای آن بزرگتر است یا خیر.
      2. اگر بیشتر باشد:
        1. ورودی کش شده‌ی پیدا شده را از کش محلی حذف کن.
        2. با حلقه ادامه دهید.
      3. اگر بزرگتر نباشد:
        1. این expressionHashPrefix خاص را از expressionHashPrefixes حذف کنید.
        2. بررسی کنید که آیا هش کامل مربوطه در expressionHashes در ورودی ذخیره شده یافت می‌شود یا خیر.
        3. در صورت یافتن، UNSAFE را برگردانید.
        4. اگر پیدا نشد، به حلقه ادامه دهید.
    3. اگر ورودی ذخیره شده در حافظه پنهان پیدا نشد، حلقه را ادامه دهید.
  5. ارسال expressionHashPrefixes به سرور مرور ایمن گوگل نسخه ۵ با استفاده از RPC SearchHashes یا متد REST hashes.search . اگر خطایی رخ داد (از جمله خطاهای شبکه، خطاهای HTTP و غیره)، SAFE را برگردانید. در غیر این صورت، اجازه دهید response response باشد که از سرور SB دریافت شده است، که لیستی از هش‌های کامل به همراه برخی اطلاعات کمکی است که ماهیت تهدید (مهندسی اجتماعی، بدافزار و غیره) و همچنین زمان انقضای حافظه پنهان expiration مشخص می‌کند.
  6. برای هر fullHash از response :
    1. دستور fullHash به همراه expiration در حافظه پنهان محلی قرار دهید.
  7. برای هر fullHash از response :
    1. فرض کنید isFound نتیجه یافتن fullHash در expressionHashes باشد.
    2. اگر isFound برابر با False باشد، حلقه را ادامه بده.
    3. اگر isFound برابر با True باشد، مقدار UNSAFE را برمی‌گرداند.
  8. بازگشت SAFE .

درست مانند حالت بلادرنگ ، این رویه دقیقاً نحوه ارسال پیشوندهای هش به سرور را مشخص نمی‌کند. به عنوان مثال، برای کلاینت قابل قبول است که تمام expressionHashPrefixes در یک درخواست واحد ارسال کند، و همچنین برای کلاینت قابل قبول است که هر پیشوند جداگانه در expressionHashPrefixes را در درخواست‌های جداگانه به سرور ارسال کند (شاید به صورت موازی پیش برود). همچنین برای کلاینت قابل قبول است که پیشوندهای هش نامرتبط یا تصادفی تولید شده را همراه با پیشوندهای هش در expressionHashPrefixes ارسال کند، تا زمانی که تعداد پیشوندهای هش ارسال شده در یک درخواست واحد از 30 تجاوز نکند.