ينطبق هذا المستند على الطرق التالية:
حول التخزين المؤقت
وللحدّ من استخدام معدّل نقل البيانات للعميل ولحماية Google من الزيادات المفاجئة في عدد الزيارات، على برامج كل من واجهة برمجة تطبيقات Lookup وواجهة برمجة تطبيقات التحديث إنشاء ذاكرة تخزين مؤقت محلية لبيانات التهديدات والحفاظ عليها.
بالنسبة إلى واجهة برمجة تطبيقات Lookup، يتم استخدام ذاكرة التخزين المؤقت لتقليل عدد طلبات threatMatches
التي يرسلها العملاء إلى Google. بالنسبة إلى واجهة برمجة التطبيقات الخاصة بالتحديث، يتم استخدام ذاكرة التخزين المؤقت لتقليل عدد طلبات fullHashes
التي يرسلها العملاء إلى Google. يتم توضيح بروتوكول التخزين المؤقت لكل
واجهة برمجة تطبيقات أدناه.
واجهة برمجة تطبيقات Lookup
يجب على عملاء واجهة برمجة تطبيقات Lookup تخزين كل عنصر ThreatMatch
تم عرضه مؤقتًا للمدة المحددة من خلال الحقل cacheDuration الخاص بها. بعد ذلك، على العملاء مراجعة ذاكرة التخزين المؤقت قبل إجراء طلب threatMatches
لاحق إلى الخادم. إذا لم تنتهِ مدة ذاكرة التخزين المؤقت للجهاز ThreatMatch
المعروض سابقًا حتى الآن، من المفترض أن يفترض العميل أن العنصر لا يزال غير آمن. قد يؤدي تخزين ThreatMatch
من العناصر مؤقتًا إلى تقليل عدد طلبات البيانات من واجهة برمجة التطبيقات التي يجريها العميل.
مثال: تهديدات تطابق.العثور
انقر على روابط الطلب والاستجابة في رأس الجدول للحصول على أمثلة كاملة.
التحقق من عنوان URL طلب تهديدات |
مطابقة عنوان URL استجابة ميزة "التهديدات" |
سلوك التخزين المؤقت |
---|---|---|
"threatEntries": [ {"url": "http://www.urltocheck.org/"} ] |
"matches": [{ "threat": {"url": "http://www.urltocheck.org/"}, "cacheDuration": "300.000s" }] |
المطابقة يجب أن ينتظر العميل 5 دقائق قبل إرسال طلب threatMatches جديد يتضمن
عنوان URL http://www.urltocheck.org/.
|
تحديث واجهة برمجة التطبيقات
لخفض العدد الإجمالي لطلبات fullHashes
التي يتم إرسالها إلى Google باستخدام واجهة برمجة تطبيقات التحديث، على العملاء الاحتفاظ بذاكرة تخزين مؤقت محلية. تنشئ واجهة برمجة التطبيقات نوعين من التخزين المؤقت، موجب وسالب.
تخزين مؤقت إيجابي
لمنع العملاء من السؤال بشكل متكرر عن حالة تجزئة كاملة غير آمنة،
تحتوي كل قيمة معروضة على ThreatMatch
على مدة ذاكرة التخزين المؤقت الإيجابية (المحدّدة في الحقل cacheDuration
)، والتي تشير إلى المدة التي تعتبر التجزئة الكاملة غير آمنة.
تخزين مؤقت سلبي
لمنع العملاء من السؤال بشكل متكرر عن حالة تجزئة كاملة آمنة،
تحدد كل استجابة fullHashes
مدة ذاكرة تخزين مؤقت سلبية للبادئة المطلوبة (المحددة في الحقل negativeCacheDuration
). تشير هذه المدة إلى مدة اعتبار جميع علامات التجزئة الكاملة التي تبدأ بالبادئة التي تم طلبها آمنة للقوائم المطلوبة، باستثناء تلك التي تم إرجاعها بواسطة الخادم على أنها غير آمنة. ويُعد هذا التخزين المؤقت مهمًا على وجه الخصوص لأنه يمنع الحِمل الزائد للزيارات والذي قد ينتج عن
تصادم بادئة تجزئة مع عنوان URL آمن يتلقى عددًا كبيرًا من الزيارات.
استشارة ذاكرة التخزين المؤقت
عندما يريد العميل التحقّق من حالة عنوان URL، سيحسب أولاً التجزئة الكاملة. في حال توفُّر بادئة التجزئة الكاملة في قاعدة البيانات المحلية، على العميل الرجوع إلى ذاكرة التخزين المؤقت قبل إرسال طلب fullHashes
إلى الخادم.
أولاً، يجب على العملاء التحقق من نتيجة ذاكرة التخزين المؤقت الإيجابية. إذا كان هناك إدخال ذاكرة تخزين مؤقت موجب غير منتهي الصلاحية لتجزئة كامل الاهتمام، فيجب اعتباره غير آمن. في حال انتهاء صلاحية الإدخال المؤدّي إلى ذاكرة التخزين المؤقت الإيجابية، على العميل إرسال طلب fullHashes
للحصول على البادئة المحلية المرتبطة. ووفقًا للبروتوكول، إذا كان الخادم يعرض التجزئة الكاملة، يُعدّ هذا الإجراء غير آمن، وبخلاف ذلك يتم اعتباره آمنًا.
إذا لم تكن هناك إدخالات ذاكرة تخزين مؤقت موجبة للتجزئة الكاملة، يجب على العميل البحث عن نتيجة ذاكرة التخزين المؤقت السلبية. إذا كان هناك إدخال ذاكرة تخزين مؤقت سلبي غير منتهي الصلاحية للبادئة المحلية المرتبطة، يتم اعتبار التجزئة الكاملة آمنة. وفي حال انتهت صلاحية إدخال ذاكرة التخزين المؤقت السلبي أو لم يكن متوفّرًا، على العميل
إرسال طلب fullHashes
للبادئة المحلية المرتبطة وتفسير الاستجابة على النحو المعتاد.
تحديث ذاكرة التخزين المؤقت
يجب تحديث ذاكرة التخزين المؤقت للبرنامج عند تلقي استجابة fullHashes
. يجب إنشاء إدخال ذاكرة تخزين مؤقت موجب
أو تعديله لتجزئة التجزئة الكاملة وفقًا للحقل cacheDuration
. ويجب أيضًا إنشاء مدة ذاكرة التخزين المؤقت السلبية لبادئة التجزئة أو تعديلها وفق الحقل negativeCacheDuration
للاستجابة.
إذا لم يعرض طلب fullHashes
تالٍ تجزئة كاملة تم تخزينها مؤقتًا بشكل إيجابي،
لن تتم مطالبة العميل بإزالة إدخال ذاكرة التخزين المؤقت الإيجابي. وهذا لا يستدعي القلق عمليًا، لأن مدة ذاكرة التخزين المؤقت الإيجابية تكون عادةً قصيرة (بضع دقائق) للسماح بالتصحيح السريع للنتائج الإيجابية الخاطئة.
مثال على السيناريو
في المثال التالي، نفترض أن h(url) هو بادئة تجزئة عنوان URL وأن H(url) هو تجزئة كاملة لعنوان URL. وهذا يعني أن h(url) = SHA256(url).substr(4), H(url) = SHA256(url).
لنفترض الآن أن عميلاً (بذاكرة تخزين مؤقت فارغة) يزور example.com/ ويرى أن h(example.com/) في قاعدة البيانات المحلية. يطلب البرنامج قيم التجزئات الكاملة لبادئة التجزئة h(example.com/) ويتلقى التجزئة الكاملة H(example.com/) مع مدة ذاكرة تخزين مؤقت موجبة تبلغ 5 دقائق ومدة ذاكرة تخزين مؤقت سلبية تبلغ ساعة واحدة.
إنّ مدة التخزين المؤقت الموجبة التي تبلغ 5 دقائق تُعلم العميل بالمدة التي يجب أن تعتبر خلالها التجزئة الكاملة (H(example.com/) غير آمنة بدون إرسال طلب fullHashes
آخر. بعد 5 دقائق، على العميل إصدار طلب fullHashes
آخر لهذه البادئة h(example.com/ ) إذا زار العميل example.com/ مرة أخرى. على العميل إعادة ضبط مدة ذاكرة التخزين المؤقت السلبية لبادئة التجزئة وفقًا للاستجابة الجديدة.
تخبر مدة التخزين المؤقت السلبية بساعة واحدة العميل طول المدة التي يجب أن تُعتبر خلالها جميع علامات التجزئة الكاملة الأخرى إلى جانب H(example.com/) التي تشترك في البادئة h(example.com/) آمنة. لمدة ساعة واحدة، يجب اعتبار كل عنوان URL مثل h(URL) = h(example.com/) آمنًا، وبالتالي لا ينتج عنه طلب fullHashes
(على افتراض أن H(URL) != H(example.com/)).
إذا كانت الاستجابة fullHashes
لا تحتوي على أي تطابقات وتم ضبط مدة ذاكرة التخزين المؤقت السلبية، على العميل ألا يُصدِر أي طلبات fullHashes
لأي بادئات مطلوبة لمدة التخزين المؤقت السلبية المحدّدة.
إذا تضمّنت الاستجابة fullHashes
تطابقًا واحدًا أو أكثر، ستظل مدة التخزين المؤقت السالبة
للاستجابة بأكملها. وفي هذه الحالة، تشير مدة ذاكرة التخزين المؤقت للتجزئة الكاملة الكاملة إلى المدة
التي يفترض خلالها البرنامج عدم حل هذه التجزئة الكاملة الكاملة بدون أمان. بعد انقضاء مدة ذاكرة التخزين المؤقت ThreatMatch
، على العميل إعادة تحميل التجزئة الكاملة من خلال إصدار طلب fullHashes
لبادئة التجزئة هذه إذا كان عنوان URL المطلوب يطابق التجزئة الحالية الكاملة في ذاكرة التخزين المؤقت. وفي هذه الحالة
لا تنطبق مدة التخزين المؤقت السلبية. تنطبق مدة التخزين المؤقت السلبية للاستجابة فقط على علامات التجزئة الكاملة التي لم تكن موجودة في استجابة fullHashes
. بالنسبة إلى التجزئات الكاملة التي لا توجد في الاستجابة، يجب على العميل الامتناع عن إصدار أي طلبات fullHashes
حتى تنقضي مدة التخزين المؤقت السلبية.
مثال: fullHashes.find
انقر على روابط الطلب والاستجابة في رأس الجدول للحصول على أمثلة كاملة.
بادئات التجزئة طلب التجزئة الكامل |
تتطابق قيمة التجزئة الكاملة استجابة التجزئة الكاملة |
سلوك التخزين المؤقت |
---|---|---|
"threatEntries": [ {"hash": "0xaaaaaaaa"} ] |
"matches": [], "negativeCacheDuration": "3600.000s" |
لا يتوفّر محتوى مطابق. يجب على العميل عدم إرسال أي طلبات fullHashes لبادئة التجزئة 0xaaaaaaa لمدة ساعة واحدة على الأقل.
أي تجزئة ذات بادئة 0xaaaaaa يتم اعتبارها آمنة لمدة ساعة واحدة. |
"threatEntries": [ {"hash": "0xbbbbbbbb"} ] |
"matches": [ "threat": {"hash": "0xbbbbbbbb0000..."} "cacheDuration": "600.000s", ], "negativeCacheDuration": "300.000s" |
التطابقات المحتملة. يجب أن يراعي العميل عنوان URL ذا التجزئة الكاملة 0xbbbbbbbb0000...غير آمن لمدة 10 دقائق. يجب أن يراعي العميل جميع عناوين URL الأخرى التي تبدأ ببادئة تجزئة 0xbbbbbbbb لمدة 5 دقائق. بعد 5 دقائق، ستنتهي صلاحية بادئة تجزئة ذاكرة التخزين المؤقت السالبة. نظرًا لأن الإدخال المؤقت الإيجابي لـ 0xbbbbbb0000... لم ينته بعد، يجب على العميل إرسال طلبات fullHashes لجميع علامات التجزئة باستثناء هذه التجزئة. |
"threatEntries": [ {"hash": "0xcccccccc"} ] |
"matches": [ "threat": {"hash": "0xccccccccdddd..."}, "cacheDuration": "600.000s" ], "negativeCacheDuration": "3600.000s" |
التطابقات المحتملة. يجب على العميل عدم إرسال أي طلب fullHashes لبادئة التجزئة 0xcccccccc لمدة ساعة واحدة على الأقل وافتراض
أن هذه البادئة آمنة - إلا إذا كانت التجزئة الكاملة لعنوان URL تتطابق مع التجزئة الكاملة المخبأة
0xccccccccdddd... وفي هذه الحالة، من المفترض أن يعتبر العميل عنوان URL هذا غير آمن لمدة 10 دقائق.
بعد 10 دقائق، تنتهي صلاحية التجزئة الكاملة. من المفترض أن تؤدي أي عمليات بحث لاحقة عن التجزئة الكاملة إلى تشغيل طلب fullHashes جديد. |