ملاحظة: لا تزال هذه المستندات قيد التطوير. نتوقع إجراء تحسينات في المستقبل القريب.
الإصدار 5 من ميزة "التصفّح الآمن من Google" هو إصدار مطوّر من الإصدار 4 من هذه الميزة. التغييران الرئيسيان اللذان تم إجراؤهما في الإصدار 5 هما حداثة البيانات وخصوصية عنوان IP. بالإضافة إلى ذلك، تم تحسين واجهة برمجة التطبيقات لزيادة المرونة والكفاءة والحد من المحتوى غير الضروري. بالإضافة إلى ذلك، تم تصميم الإصدار 5 من ميزة "التصفّح الآمن" من Google لتسهيل الانتقال من الإصدار 4.
توفّر Google حاليًا الإصدارَين 4 و5، وكلاهما جاهز للاستخدام. يمكنك استخدام الإصدار 4 أو الإصدار 5. لم نعلن عن تاريخ إيقاف الإصدار 4 نهائيًا، وإذا فعلنا ذلك، سنرسل إشعارًا قبل عام واحد على الأقل. ستوضّح هذه الصفحة الإصدار 5 بالإضافة إلى دليل نقل البيانات من الإصدار 4 إلى الإصدار 5، وسيظلّ دليل الإصدار 4 الكامل متاحًا.
حداثة البيانات
في الإصدار 5، نقدّم وضع التشغيل المعروف باسم "الحماية في الوقت الفعلي". ويؤدي ذلك إلى تجنُّب مشكلة عدم حداثة البيانات المذكورة أعلاه. في الإصدار 4، من المتوقّع أن ينزِّل العملاء قاعدة بيانات محلية ويحافظون عليها، وأن يجروا عمليات تحقّق من قوائم التهديدات التي تم تنزيلها محليًا، ثمّ أن يطلبوا تنزيل التجزئة الكاملة عند تطابق البادئة جزئيًا. في الإصدار 5، على الرغم من أنّه من المفترض أن يواصل العملاء تنزيل قاعدة بيانات محلية لقوائم التهديدات والحفاظ عليها، من المتوقّع الآن أيضًا أن ينزّل العملاء قائمة بالمواقع الإلكترونية التي يُرجّح أن تكون غير ضارة (المعروفة باسم "الذاكرة المؤقتة الشاملة")، وأن يجروا عملية تحقّق محلية من "الذاكرة المؤقتة الشاملة" هذه بالإضافة إلى عملية تحقّق محلية من قائمة التهديدات، وأخيراً، عندما يكون هناك تطابق جزئي للبادئة مع قوائم التهديدات أو عدم تطابق في "الذاكرة المؤقتة الشاملة"، يُرجى إجراء طلب لتنزيل التجزئات الكاملة. (للحصول على تفاصيل عن المعالجة المحلية التي يطلبها العميل، يُرجى الاطّلاع على الإجراء المقدَّم أدناه). ويمثّل ذلك تحولًا من السماح تلقائيًا إلى التحقّق تلقائيًا، ما يمكن أن يُحسِّن من الحماية في ظل انتشار التهديدات على الويب بشكل أسرع. بعبارة أخرى، هذا بروتوكول مصمّم لتوفير حماية في الوقت الفعلي تقريبًا: نهدف إلى استفادة العملاء من بيانات "التصفح الآمن من Google" الأحدث.
خصوصية عنوان IP
لا تعالج ميزة "التصفح الآمن من Google" (الإصدار 4 أو الإصدار 5) أيّ شيء مرتبط بهوية المستخدم أثناء عرض الطلبات. يتم تجاهل ملفات تعريف الارتباط، في حال إرسالها. تعرف Google عناوين IP الأصلية للطلبات، ولكنّها لا تستخدم عناوين IP إلا لتلبية احتياجات الاتصال الأساسية (أي لإرسال الردود) ولأغراض مكافحة حجب الخدمة.
بالتزامن مع الإصدار 5، نقدّم واجهة برمجة تطبيقات مصاحبة تُعرف باسم واجهة برمجة التطبيقات Safe Browsing Oblivious HTTP Gateway API. ويستخدم هذا الإجراء بروتوكول HTTP غير المُدرَك لإخفاء عناوين IP للمستخدمين النهائيين من Google. ويعمل هذا الإجراء من خلال الاستعانة بجهة خارجية غير متواطئة لمعالجة نسخة مشفّرة من طلب المستخدم ثم إعادة توجيهها إلى Google. وبالتالي، لا يمكن للجهة الخارجية الوصول إلا إلى عناوين IP، ولا يمكن لشركة Google الوصول إلا إلى محتوى الطلب. يشغِّل الطرف الثالث خدمة Oblivious HTTP Relay (مثل هذه الخدمة من Fastly)، وتشغِّل Google خدمة Oblivious HTTP Gateway. هذه واجهة برمجة تطبيقات اختيارية مصاحبة. وعند استخدامها مع ميزة "التصفّح الآمن من Google"، لن يتم إرسال عناوين IP للمستخدمين النهائيين إلى Google.
أوضاع التشغيل
تتيح الإصدار 5 من ميزة "التصفّح الآمن" من Google للعملاء الاختيار من بين ثلاثة أوضاع تشغيل.
وضع "الوقت الفعلي"
عندما يختار العملاء استخدام الإصدار 5 من ميزة "التصفّح الآمن من Google" في وضع "الوقت الفعلي"، سيحتفظ العملاء في قاعدة بياناتهم المحلية بما يلي: (1) ذاكرة تخزين مؤقتة عالمية للمواقع الإلكترونية التي يُحتمل أن تكون غير ضارة، بتنسيق تجزئات SHA256 لتعبيرات عناوين URL التي تتضمّن اللاحقة الخاصة بالخادم أو البادئة الخاصة بالمسار، (2) مجموعة من قوائم التهديدات، بتنسيق بادئات تجزئة SHA256 لتعبيرات عناوين URL التي تتضمّن اللاحقة الخاصة بالخادم أو البادئة الخاصة بالمسار. الفكرة الأساسية هي أنّه عندما يريد العميل التحقّق من عنوان URL معيّن، يتم إجراء عملية تحقّق محلية باستخدام "الذاكرة المؤقتة الشاملة". وفي حال اجتياز هذا الفحص، يتم إجراء فحص لقوائم التهديدات المحلية. وفي حال عدم توفّر القيمة، يواصل العميل التحقّق من التجزئة في الوقت الفعلي كما هو موضّح أدناه.
بالإضافة إلى قاعدة البيانات المحلية، سيحتفظ العميل بذاكرة تخزين مؤقتة محلية. ولا يلزم أن تكون هذه الذاكرة المؤقتة المحلية في مساحة تخزين دائمة، ويمكن محو بياناتها في حال ضغط الذاكرة.
تتوفّر أدناه مواصفات تفصيلية للإجراءات.
وضع القائمة المحلية
عندما يختار العملاء استخدام الإصدار 5 من ميزة "التصفح الآمن من Google" في هذا الوضع، يكون سلوك العميل مشابهًا للإصدار 4 من Update API باستثناء استخدام واجهة برمجة التطبيقات المحسّنة للإصدار 5. سيحتفظ العملاء في قاعدة بياناتهم المحلية بمجموعة من قوائم التهديدات بتنسيق بادئات تجزئة SHA256 لتعبيرات عناوين URL التي تتضمّن لاحقة المضيف/بادئة المسار. عندما يريد العميل التحقّق من عنوان URL معيّن، يتم إجراء عملية تحقّق باستخدام قائمة التهديدات المحلية. يتصل العميل بالخادم لمواصلة عملية التحقّق في حال توفّر مطابقة فقط.
كما هو موضّح أعلاه، سيحتفظ العميل أيضًا بذاكرة تخزين مؤقت محليّة لا يلزم أن تكون في مساحة تخزين دائمة.
وضع "الوقت الفعلي بدون تخزين"
عندما يختار العملاء استخدام الإصدار 5 من ميزة "التصفّح الآمن من Google" في وضع "الوقت الفعلي بدون تخزين"، لا يحتاج العميل إلى الاحتفاظ بأي قاعدة بيانات محلية دائمة. ومع ذلك، من المتوقّع أن يحتفظ العميل بذاكرة تخزين مؤقتة على الجهاز. ولا يلزم أن تكون هذه الذاكرة المؤقتة المحلية في مساحة تخزين دائمة، ويمكن محو بياناتها في حال ضغط الذاكرة.
عندما يريد العميل التحقّق من عنوان URL معيّن، يتصل العميل دائمًا بالخادم لإجراء عملية التحقّق. يشبه هذا الوضع ما قد ينفذه عملاء Lookup API في الإصدار 4.
مقارنةً بوضع "الوقت الفعلي"، قد يستخدم هذا الوضع قدرًا أكبر من معدل نقل البيانات في الشبكة، ولكنه قد يكون أكثر ملاءمةً إذا كان من غير الملائم للعميل الحفاظ على الحالة المحلية الثابتة.
إجراءات التحقّق من عناوين URL في الوقت الفعلي
يُستخدَم هذا الإجراء عندما يختار العميل وضع التشغيل في الوقت الفعلي.
تأخذ هذه العملية عنوان URL واحدًا u
وتُعرِض SAFE
أو UNSAFE
أو UNSURE
. إذا تم عرض الرمز SAFE
، يعني ذلك أنّ ميزة "التصفّح الآمن من Google" ترى أنّ عنوان URL آمن. إذا تم عرض القيمة UNSAFE
، يعني ذلك أنّ ميزة "التصفّح الآمن من Google" ترى أنّ عنوان URL قد يكون غير آمن، ويجب اتّخاذ الإجراء المناسب، مثل عرض تحذير للمستخدم النهائي أو نقل رسالة تم استلامها إلى مجلد الرسائل غير المرغوب فيها أو طلب تأكيد إضافي من المستخدم قبل المتابعة. إذا تم عرض الرمز UNSURE
، يجب استخدام الإجراء التالي للتحقّق من الملفات المحلية بعد ذلك.
- لنفترض أنّ
expressions
هي قائمة بتعبيرات اللاحقة/البادئة التي تم إنشاؤها بواسطة عنوان URLu
. - لنفترض أنّ
expressionHashes
هي قائمة، حيث تكون العناصر هي تجزئات SHA256 لكل تعبير فيexpressions
. - لكل
hash
منexpressionHashes
:- إذا كان بإمكانك العثور على
hash
في ذاكرة التخزين المؤقت الشاملة، أعِدUNSURE
.
- إذا كان بإمكانك العثور على
- لنفترض أنّ
expressionHashPrefixes
هي قائمة، حيث تكون العناصر هي أول 4 بايت من كلّ تجزئة فيexpressionHashes
. - لكل
expressionHashPrefix
منexpressionHashPrefixes
:- ابحث عن
expressionHashPrefix
في ذاكرة التخزين المؤقت المحلية. - في حال العثور على الإدخال المخزّن مؤقتًا:
- حدِّد ما إذا كان الوقت الحالي أكبر من وقت انتهاء الصلاحية.
- إذا كانت أكبر:
- أزِل الإدخال الذي تم العثور عليه في ذاكرة التخزين المؤقت من ذاكرة التخزين المؤقت المحلية.
- واصِل تنفيذ الحلقة.
- إذا لم تكن أكبر:
- عليك إزالة هذا
expressionHashPrefix
تحديدًا منexpressionHashPrefixes
. - تحقَّق مما إذا تم العثور على التجزئة الكاملة المقابلة ضمن
expressionHashes
في الإدخال المخزّن مؤقتًا. - في حال العثور على القيمة، يجب إرجاع
UNSAFE
. - إذا لم يتم العثور عليه، يُرجى مواصلة تنفيذ الحلقة.
- عليك إزالة هذا
- إذا لم يتم العثور على الإدخال المخزّن مؤقتًا، يُرجى مواصلة تنفيذ الحلقة.
- ابحث عن
- أرسِل
expressionHashPrefixes
إلى خادم الإصدار 5 من ميزة "التصفّح الآمن من Google" باستخدام SearchHashes عبر بروتوكول استدعاء الإجراء عن بُعد أو طريقة REST hashes.search. إذا حدث خطأ (بما في ذلك أخطاء الشبكة وأخطاء HTTP وما إلى ذلك)، يجب عرض القيمةUNSURE
. بخلاف ذلك، يجب أن يكون الردّ هوresponse
الذي تم تلقّيه من خادم SB، وهو عبارة عن قائمة بالهاشتاغات الكاملة بالإضافة إلى بعض المعلومات المساعِدة التي تحدّد طبيعة التهديد (الهندسة الاجتماعية والبرامج الضارة وما إلى ذلك)، بالإضافة إلى وقت انتهاء صلاحية ذاكرة التخزين المؤقتexpiration
. - لكل
fullHash
منresponse
:- أدرِج
fullHash
في ذاكرة التخزين المؤقت على الجهاز، معexpiration
.
- أدرِج
- لكل
fullHash
منresponse
:- لنفترض أنّ
isFound
هي نتيجة العثور علىfullHash
فيexpressionHashes
. - إذا كانت قيمة
isFound
هي "خطأ"، يُرجى المتابعة في الحلقة. - إذا كانت القيمة
isFound
صحيحة، اعرضUNSAFE
.
- لنفترض أنّ
- انقر على
SAFE
.
على الرغم من أنّ هذا البروتوكول يحدّد حالات إرسال العميل لـ expressionHashPrefixes
إلى الخادم، إلا أنّه لا يحدّد كيفية إرسالها بالضبط. على سبيل المثال، من المقبول أن يرسل العميل كل expressionHashPrefixes
في طلب واحد، ومن المقبول أيضًا أن يرسل العميل كل بادئة فردية في expressionHashPrefixes
إلى الخادم في طلبات منفصلة (ربما تتم المعالجة بشكل موازٍ). من المقبول أيضًا أن يرسل العميل بادئات تجزئة غير ذات صلة أو تم إنشاؤها عشوائيًا مع بادئات التجزئة في expressionHashPrefixes
، ما دام عدد بادئات التجزئة المُرسَلة في طلب واحد لا يتجاوز 30 بادئة.
إجراءات التحقّق من عناوين URL في قائمة LocalThreat
يُستخدَم هذا الإجراء عندما يختار العميل وضع القائمة المحلية. ويتم استخدامه أيضًا عندما يعرض العميل الإجراء RealTimeCheck أعلاه القيمة UNSURE
.
يأخذ هذا الإجراء عنوان URL واحدًا u
ويعرض SAFE
أو UNSAFE
.
- لنفترض أنّ
expressions
هي قائمة بتعبيرات اللاحقة/البادئة التي تم إنشاؤها بواسطة عنوان URLu
. - لنفترض أنّ
expressionHashes
هي قائمة، حيث تكون العناصر هي تجزئات SHA256 لكل تعبير فيexpressions
. - لنفترض أنّ
expressionHashPrefixes
هي قائمة، حيث تكون العناصر هي أول 4 بايت من كلّ تجزئة فيexpressionHashes
. - لكل
expressionHashPrefix
منexpressionHashPrefixes
:- ابحث عن
expressionHashPrefix
في ذاكرة التخزين المؤقت المحلية. - في حال العثور على الإدخال المخزّن مؤقتًا:
- حدِّد ما إذا كان الوقت الحالي أكبر من وقت انتهاء الصلاحية.
- إذا كانت أكبر:
- أزِل الإدخال الذي تم العثور عليه في ذاكرة التخزين المؤقت من ذاكرة التخزين المؤقت المحلية.
- واصِل تنفيذ الحلقة.
- إذا لم تكن أكبر:
- عليك إزالة هذا
expressionHashPrefix
تحديدًا منexpressionHashPrefixes
. - تحقَّق مما إذا تم العثور على التجزئة الكاملة المقابلة ضمن
expressionHashes
في الإدخال المخزّن مؤقتًا. - في حال العثور على القيمة، يجب إرجاع
UNSAFE
. - إذا لم يتم العثور عليه، يُرجى مواصلة تنفيذ الحلقة.
- عليك إزالة هذا
- إذا لم يتم العثور على الإدخال المخزّن مؤقتًا، يُرجى مواصلة تنفيذ الحلقة.
- ابحث عن
- لكل
expressionHashPrefix
منexpressionHashPrefixes
:- ابحث عن
expressionHashPrefix
في قاعدة بيانات قائمة التهديدات المحلية. - إذا تعذّر العثور على
expressionHashPrefix
في قاعدة بيانات قائمة التهديدات المحلية، أزِله منexpressionHashPrefixes
.
- ابحث عن
- أرسِل
expressionHashPrefixes
إلى خادم الإصدار 5 من ميزة "التصفّح الآمن من Google" باستخدام SearchHashes عبر بروتوكول استدعاء الإجراء عن بُعد أو طريقة REST hashes.search. إذا حدث خطأ (بما في ذلك أخطاء الشبكة وأخطاء HTTP وما إلى ذلك)، يجب عرض القيمةSAFE
. بخلاف ذلك، يجب أن يكون الردّ هوresponse
الذي تم تلقّيه من خادم SB، وهو عبارة عن قائمة بالهاشتاغات الكاملة بالإضافة إلى بعض المعلومات المساعِدة التي تحدّد طبيعة التهديد (الهندسة الاجتماعية والبرامج الضارة وما إلى ذلك)، بالإضافة إلى وقت انتهاء صلاحية ذاكرة التخزين المؤقتexpiration
. - لكل
fullHash
منresponse
:- أدرِج
fullHash
في ذاكرة التخزين المؤقت على الجهاز، معexpiration
.
- أدرِج
- لكل
fullHash
منresponse
:- لنفترض أنّ
isFound
هي نتيجة العثور علىfullHash
فيexpressionHashes
. - إذا كانت قيمة
isFound
هي "خطأ"، يُرجى المتابعة في الحلقة. - إذا كانت القيمة
isFound
صحيحة، اعرضUNSAFE
.
- لنفترض أنّ
- انقر على
SAFE
.
إجراءات التحقّق من عناوين URL في الوقت الفعلي بدون قاعدة بيانات محلية
يُستخدَم هذا الإجراء عندما يختار العميل وضع التشغيل في الوقت الفعلي بدون مساحة تخزين.
يأخذ هذا الإجراء عنوان URL واحدًا u
ويعرض SAFE
أو UNSAFE
.
- لنفترض أنّ
expressions
هي قائمة بتعبيرات اللاحقة/البادئة التي تم إنشاؤها بواسطة عنوان URLu
. - لنفترض أنّ
expressionHashes
هي قائمة، حيث تكون العناصر هي تجزئات SHA256 لكل تعبير فيexpressions
. - لنفترض أنّ
expressionHashPrefixes
هي قائمة، حيث تكون العناصر هي أول 4 بايت من كلّ تجزئة فيexpressionHashes
. - لكل
expressionHashPrefix
منexpressionHashPrefixes
:- ابحث عن
expressionHashPrefix
في ذاكرة التخزين المؤقت المحلية. - في حال العثور على الإدخال المخزّن مؤقتًا:
- حدِّد ما إذا كان الوقت الحالي أكبر من وقت انتهاء الصلاحية.
- إذا كانت أكبر:
- أزِل الإدخال الذي تم العثور عليه في ذاكرة التخزين المؤقت من ذاكرة التخزين المؤقت المحلية.
- واصِل تنفيذ الحلقة.
- إذا لم تكن أكبر:
- عليك إزالة هذا
expressionHashPrefix
تحديدًا منexpressionHashPrefixes
. - تحقَّق مما إذا تم العثور على التجزئة الكاملة المقابلة ضمن
expressionHashes
في الإدخال المخزّن مؤقتًا. - في حال العثور على القيمة، يجب إرجاع
UNSAFE
. - إذا لم يتم العثور عليه، يُرجى مواصلة تنفيذ الحلقة.
- عليك إزالة هذا
- إذا لم يتم العثور على الإدخال المخزّن مؤقتًا، يُرجى مواصلة تنفيذ الحلقة.
- ابحث عن
- أرسِل
expressionHashPrefixes
إلى خادم الإصدار 5 من ميزة "التصفّح الآمن من Google" باستخدام SearchHashes عبر بروتوكول استدعاء الإجراء عن بُعد أو طريقة REST hashes.search. إذا حدث خطأ (بما في ذلك أخطاء الشبكة وأخطاء HTTP وما إلى ذلك)، يجب عرض القيمةSAFE
. بخلاف ذلك، يجب أن يكون الردّ هوresponse
الذي تم تلقّيه من خادم SB، وهو عبارة عن قائمة بالهاشتاغات الكاملة بالإضافة إلى بعض المعلومات المساعِدة التي تحدّد طبيعة التهديد (الهندسة الاجتماعية والبرامج الضارة وما إلى ذلك)، بالإضافة إلى وقت انتهاء صلاحية ذاكرة التخزين المؤقتexpiration
. - لكل
fullHash
منresponse
:- أدرِج
fullHash
في ذاكرة التخزين المؤقت على الجهاز، معexpiration
.
- أدرِج
- لكل
fullHash
منresponse
:- لنفترض أنّ
isFound
هي نتيجة العثور علىfullHash
فيexpressionHashes
. - إذا كانت قيمة
isFound
هي "خطأ"، يُرجى المتابعة في الحلقة. - إذا كانت القيمة
isFound
صحيحة، اعرضUNSAFE
.
- لنفترض أنّ
- انقر على
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
مرة أخرى، يكون نص الردّ هو حمولة منسَّقة في مخزن بروتوكول يمكنك فك ترميزها بعد ذلك.