Overview

توجه: این مستندات در حال حاضر در حال توسعه است. انتظار پیشرفت در آینده نزدیک را داشته باشید.

Google Safe Browsing v5 تکامل یافته Google Safe Browsing v4 است. دو تغییر کلیدی ایجاد شده در نسخه 5، تازگی داده ها و حریم خصوصی IP هستند. علاوه بر این، سطح API برای افزایش انعطاف پذیری، کارایی و کاهش نفخ بهبود یافته است. علاوه بر این، Google Safe Browsing v5 برای آسان کردن مهاجرت از نسخه 4 طراحی شده است.

در حال حاضر، گوگل نسخه 4 و 5 را ارائه می دهد و هر دو آماده تولید در نظر گرفته می شوند. می توانید از نسخه 4 یا 5 استفاده کنید. ما تاریخی برای غروب آفتاب v4 اعلام نکرده ایم. اگر چنین کنیم، حداقل یک سال اخطار خواهیم داد. این صفحه نسخه 5 و همچنین راهنمای مهاجرت از نسخه 4 به نسخه 5 را شرح خواهد داد. مستندات کامل v4 در دسترس است.

تازگی داده ها

در نسخه 5، ما یک حالت عملیاتی را معرفی می کنیم که به عنوان حفاظت در زمان واقعی شناخته می شود. این مشکل بیات بودن داده در بالا را دور می زند. در نسخه 4، از کلاینت‌ها انتظار می‌رود که یک پایگاه داده محلی را دانلود و نگهداری کنند، لیست‌های تهدید بارگیری شده محلی را بررسی کنند، و سپس هنگامی که یک پیشوند جزئی وجود دارد، درخواستی برای دانلود هش کامل انجام دهند. در نسخه 5، اگرچه کلاینت‌ها باید به دانلود و نگهداری یک پایگاه داده محلی از فهرست‌های تهدید ادامه دهند، اما اکنون از مشتریان انتظار می‌رود که فهرستی از سایت‌های احتمالی خوش خیم (به نام کش جهانی) را دانلود کنند، هم یک بررسی محلی برای این کش جهانی و هم یک بررسی فهرست تهدید محلی انجام دهند، و در نهایت وقتی پیشوندی جزئی برای لیست‌های تهدید یا عدم تطابق در حافظه پنهان جهانی وجود دارد، یک درخواست کامل برای دانلود کش جهانی انجام دهند. (برای جزئیات در مورد پردازش محلی مورد نیاز مشتری، لطفاً به روش ارائه شده در زیر مراجعه کنید.) این نشان دهنده تغییر از مجوز به پیش فرض به بررسی پیش فرض است، که می تواند حفاظت را در پرتو انتشار سریعتر تهدیدات در وب بهبود بخشد. به عبارت دیگر، این پروتکلی است که برای ارائه حفاظت در زمان واقعی طراحی شده است: هدف ما این است که مشتریان از داده‌های مرور ایمن Google جدیدتر بهره ببرند.

حریم خصوصی IP

مرور ایمن Google (نسخه 4 یا 5) هیچ چیز مرتبط با هویت کاربر را در طول ارائه درخواست‌ها پردازش نمی‌کند. کوکی ها، در صورت ارسال، نادیده گرفته می شوند. آدرس‌های IP اصلی درخواست‌ها برای Google شناخته شده است، اما Google فقط از آدرس‌های IP برای نیازهای ضروری شبکه (یعنی برای ارسال پاسخ‌ها) و برای اهداف ضد DoS استفاده می‌کند.

همزمان با نسخه 5، یک API همراه به نام Safe Browsing Oblivious HTTP Gateway API معرفی می کنیم. این از HTTP فراموش شده برای پنهان کردن آدرس IP کاربران نهایی از Google استفاده می کند. با داشتن یک شخص ثالث بدون تبانی برای رسیدگی به نسخه رمزگذاری شده درخواست کاربر و سپس ارسال آن به Google کار می کند. بنابراین شخص ثالث فقط به آدرس های IP دسترسی دارد و گوگل فقط به محتوای درخواست دسترسی دارد. شخص ثالث یک رله HTTP فراموش‌شده (مانند این سرویس توسط Fastly ) را راه‌اندازی می‌کند و Google دروازه HTTP فراموش‌شده را اجرا می‌کند. این یک API همراه اختیاری است. هنگام استفاده از آن در ارتباط با مرور ایمن Google، آدرس IP کاربران نهایی دیگر به Google ارسال نمی شود.

حالت های عملیات

Google Safe Browsing v5 به مشتریان این امکان را می دهد که از بین سه حالت کار انتخاب کنند.

حالت زمان واقعی

هنگامی که مشتریان استفاده از مرور ایمن Google نسخه 5 را در حالت بلادرنگ انتخاب می‌کنند، مشتریان در پایگاه داده محلی خود نگه می‌دارند: (1) یک حافظه پنهان جهانی از سایت‌های احتمالاً خوش خیم، قالب‌بندی شده به صورت هش SHA256 از عبارت‌های URL میزبان-پسوند/مسیر-پیشوند، (ب) مجموعه‌ای از لیست‌های تهدید، قالب‌بندی شده به عنوان SHA256 پیشوند-پیشوند URL-پیشوند هش-پیشوند عبارت میزبان. ایده سطح بالا این است که هر زمان که مشتری بخواهد یک URL خاص را بررسی کند، یک بررسی محلی با استفاده از کش جهانی انجام می شود. اگر آن چک بگذرد، بررسی لیست تهدیدات محلی انجام می شود. در غیر این صورت، مشتری به بررسی هش بلادرنگ به شرح زیر ادامه می‌دهد.

علاوه بر پایگاه داده محلی، مشتری یک حافظه پنهان محلی را نیز حفظ خواهد کرد. چنین حافظه پنهان محلی لازم نیست در ذخیره سازی دائمی باشد و ممکن است در صورت فشار حافظه پاک شود.

مشخصات دقیق این روش در زیر موجود است.

حالت فهرست محلی

وقتی کلاینت‌ها استفاده از Google Safe Browsing v5 را در این حالت انتخاب می‌کنند، رفتار سرویس گیرنده شبیه به v4 Update API است به جز استفاده از سطح API بهبود یافته v5. کلاینت‌ها مجموعه‌ای از لیست‌های تهدید را در پایگاه داده محلی خود نگه می‌دارند که به صورت پیشوندهای هش SHA256 از عبارت‌های URL پسوند میزبان/پیشوند راه‌اندازی شده‌اند. هر زمان که مشتری بخواهد یک URL خاص را بررسی کند، با استفاده از لیست تهدید محلی، بررسی انجام می شود. اگر و تنها در صورت وجود تطابق، کلاینت برای ادامه بررسی به سرور متصل می شود.

همانند موارد فوق، کلاینت یک کش محلی را نیز حفظ خواهد کرد که نیازی به ذخیره سازی دائمی ندارد.

حالت بی‌درنگ بدون ذخیره‌سازی

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

هر زمان که مشتری بخواهد یک URL خاص را بررسی کند، مشتری همیشه برای انجام بررسی به سرور متصل می شود. این حالت مشابه چیزی است که مشتریان API جستجوی v4 ممکن است اجرا کنند.

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

روش بررسی URL بلادرنگ

این رویه زمانی استفاده می شود که مشتری حالت زمان واقعی عملیات را انتخاب کند.

این روش یک URL واحد u را می گیرد و SAFE , UNSAFE یا UNSURE را برمی گرداند . اگر SAFE را برگرداند، URL توسط مرور ایمن Google ایمن تلقی می شود. اگر UNSAFE برگرداند، URL به‌طور بالقوه توسط «مرور ایمن Google» ناامن تلقی می‌شود و باید اقدامات لازم انجام شود: مانند نشان دادن یک هشدار به کاربر نهایی، انتقال پیام دریافتی به پوشه هرزنامه، یا نیاز به تأیید اضافی توسط کاربر قبل از ادامه. اگر UNSURE برگردد، باید از روش بررسی محلی زیر استفاده شود.

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

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

رویه بررسی URL لیست LocalThreat

این رویه زمانی استفاده می شود که مشتری حالت عملیات لیست محلی را انتخاب کند. همچنین زمانی استفاده می‌شود که رویه RealTimeCheck بالا مقدار UNSURE را برمی‌گرداند.

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

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

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

این روش زمانی استفاده می‌شود که مشتری حالت بدون ذخیره‌سازی زمان واقعی را انتخاب کند.

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

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

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

نمونه درخواست ها

این بخش نمونه هایی از استفاده مستقیم از HTTP API برای دسترسی به مرور ایمن Google را مستند می کند. به طور کلی توصیه می شود که از یک اتصال زبان تولید شده استفاده کنید زیرا به طور خودکار رمزگذاری و رمزگشایی را به روشی راحت انجام می دهد. لطفاً برای آن الزام آور به مستندات مراجعه کنید.

در اینجا یک نمونه درخواست HTTP با استفاده از روش hashes.search آورده شده است:

GET https://safebrowsing.googleapis.com/v5/hashes:search?key=INSERT_YOUR_API_KEY_HERE&hashPrefixes=WwuJdQ

بدنه پاسخ یک باری با فرمت پروتکل بافر است که می توانید آن را رمزگشایی کنید.

در اینجا یک نمونه درخواست HTTP با استفاده از روش hashLists.batchGet آورده شده است:

GET https://safebrowsing.googleapis.com/v5alpha1/hashLists:batchGet?key=INSERT_YOUR_API_KEY_HERE&names=se&names=mw-4b

بدنه پاسخ، بار دیگر، یک باری با فرمت پروتکل بافر است که می توانید آن را رمزگشایی کنید.