Migration From V4

من التحسينات المهمة التي يوفّرها الإصدار 5 من "التصفّح الآمن من Google" مقارنةً بالإصدار 4 (وتحديدًا Update API في الإصدار 4) هي حداثة البيانات وتغطيتها. بما أنّ الحماية تعتمد بشكل كبير على قاعدة البيانات المحلية التي يحتفظ بها العميل، فإنّ التأخير في تحديث قاعدة البيانات المحلية وحجمها هما السبب الرئيسي في عدم توفّر الحماية. في الإصدار 4، يستغرق العميل العادي من 20 إلى 50 دقيقة للحصول على أحدث إصدار من قوائم التهديدات. لسوء الحظ، تنتشر هجمات التصيّد الاحتيالي بسرعة: اعتبارًا من عام 2021، كان% 60 من المواقع الإلكترونية التي تنفّذ الهجمات نشطًا لمدة أقل من 10 دقائق. تشير تحليلاتنا إلى أنّ حوالي %25 إلى %30 من حالات عدم توفّر الحماية من التصيّد الاحتيالي تعود إلى عدم حداثة البيانات. بالإضافة إلى ذلك، لا تكون بعض الأجهزة مجهّزة لإدارة جميع قوائم التهديدات في "التصفّح الآمن" من Google، والتي تستمر في النمو بمرور الوقت.

إذا كنت تستخدم حاليًا Update API الإصدار 4، يتوفّر مسار نقل سلس من الإصدار 4 إلى الإصدار 5 بدون الحاجة إلى إعادة ضبط قاعدة البيانات المحلية أو محوها. يوضّح هذا القسم كيفية إجراء ذلك.

تعديلات على قائمة التحويل

على عكس الإصدار 4، حيث يتم تحديد القوائم من خلال مجموعة من نوع التهديد ونوع النظام الأساسي ونوع إدخال التهديد، يتم في الإصدار 5 تحديد القوائم ببساطة من خلال الاسم. ويوفّر ذلك المرونة عندما يمكن أن تتشارك قوائم الإصدار 5 المتعددة نوع التهديد نفسه. تمت إزالة أنواع المنصات وأنواع إدخالات التهديدات في الإصدار 5.

في الإصدار 4، يمكن استخدام طريقة threatListUpdates.fetch لتنزيل القوائم. في الإصدار 5، يتم التبديل إلى طريقة hashLists.batchGet.

يجب إجراء التغييرات التالية على الطلب:

  1. أزِل العنصر v4 ClientInfo بالكامل. بدلاً من تقديم تعريف العميل باستخدام حقل مخصّص، يمكنك ببساطة استخدام عنوان User-Agent المعروف. مع أنّه ليس هناك تنسيق محدّد لتقديم تعريف العميل في هذا العنوان، نقترح تضمين معرّف العميل الأصلي وإصدار العميل مفصولَين بمسافة أو شرطة مائلة.
  2. لكل عنصر v4 ListUpdateRequest:
    • ابحث عن اسم قائمة الإصدار 5 المقابل من القوائم المتاحة وقدِّم هذا الاسم في طلب الإصدار 5.
    • أزِل الحقول غير الضرورية، مثل threat_entry_type أو platform_type.
    • يتوافق الحقل state في الإصدار 4 مباشرةً مع الحقل versions في الإصدار 5. يمكن ببساطة إرسال سلسلة البايت نفسها التي سيتم إرسالها إلى الخادم باستخدام الحقل state في الإصدار 4 من خلال الحقل versions في الإصدار 5.
    • بالنسبة إلى قيود الإصدار 4، يستخدم الإصدار 5 نسخة مبسطة تُعرف باسم SizeConstraints. يجب حذف الحقول الإضافية، مثل region.

يجب إجراء التغييرات التالية على الردّ:

  1. يتم ببساطة استبدال enum ResponseType في الإصدار 4 بحقل منطقي اسمه partial_update.
  2. يمكن الآن أن تكون قيمة الحقل minimum_wait_duration صفرًا أو يمكن إغفاله. وفي حال كان كذلك، يُطلب من العميل إرسال طلب آخر على الفور. يحدث ذلك فقط عندما يحدّد العميل في SizeConstraints قيدًا أصغر على الحد الأقصى لحجم التحديث من الحد الأقصى لحجم قاعدة البيانات.
  3. يجب تعديل خوارزمية فك ترميز Rice للأعداد الصحيحة ذات 32 بت. والفرق هو أنّ البيانات المرمّزة يتم ترميزها باستخدام ترتيب مختلف. في كل من الإصدار 4 والإصدار 5، يتم ترتيب بادئات التجزئة ذات 32 بت حسب الترتيب المعجمي. ولكن في الإصدار 4، يتم التعامل مع هذه البادئات على أنّها little endian عند ترتيبها، بينما في الإصدار 5 يتم التعامل مع هذه البادئات على أنّها big endian عند ترتيبها. وهذا يعني أنّ العميل لا يحتاج إلى إجراء أي عملية ترتيب، لأنّ الترتيب المعجمي مطابق للترتيب الرقمي مع نظام النهاية الكبرى. يمكنك الاطّلاع هنا على مثال لهذا النوع في عملية تنفيذ الإصدار 4 من Chromium. ويمكن إزالة هذا النوع من الترتيب.
  4. يجب تنفيذ خوارزمية فك ترميز Rice لأطوال التجزئة الأخرى أيضًا.

تحويل عمليات البحث باستخدام رموز التجزئة

في الإصدار 4، يمكن استخدام طريقة fullHashes.find للحصول على تجزئات كاملة. الطريقة المكافئة في الإصدار 5 هي الطريقة hashes.search.

يجب إجراء التغييرات التالية على الطلب:

  1. يجب أن تكون بنية الرمز البرمجي على النحو الذي يتيح إرسال بادئات التجزئة التي يبلغ طولها 4 بايتات فقط.
  2. أزِل عناصر v4 ClientInfo بالكامل. بدلاً من تقديم تعريف العميل باستخدام حقل مخصّص، يمكنك ببساطة استخدام عنوان User-Agent المعروف. مع أنّه ليس هناك تنسيق محدّد لتقديم تعريف العميل في هذا العنوان، نقترح تضمين معرّف العميل الأصلي وإصدار العميل مفصولَين بمسافة أو شرطة مائلة.
  3. أزِل الحقل client_states. لم يعُد ذلك ضروريًا.
  4. لم يعُد من الضروري تضمين threat_types والحقول المشابهة.

يجب إجراء التغييرات التالية على الردّ:

  1. تمت إزالة الحقل minimum_wait_duration. يمكن للعميل دائمًا إصدار طلب جديد حسب الحاجة.
  2. تم تبسيط العنصر v4 ThreatMatch إلى العنصر FullHash.
  3. تم تبسيط التخزين المؤقت ليصبح مدة تخزين مؤقت واحدة. راجِع الإجراءات المذكورة أعلاه للتفاعل مع ذاكرة التخزين المؤقت.