في الآونة الأخيرة، جاءني العديد من الأخوة في التطبيقات الاجتماعية ليبوحوا بشكواهم، قائلين إن واجهة واجهة واجهة برمجة التطبيقات الخاصة بهم يتم تنظيفها كل يوم، وتحميل الصور بطيء للغاية لدرجة أن المستخدم يلعن مباشرة. في هذه الأيام، ليس من السهل الانخراط في المنتجات الاجتماعية، والمنافسون يزحفون البيانات بشكل خبيث، وعصابات الابتزاز تنظف الواجهة، والخادم لا يتحرك في وقت التوقف، وتجربة المستخدم وصلت إلى الحضيض. لقد ألقيت نظرة على بنيتهم، رجل جيد، خادم واجهة برمجة التطبيقات العاري المكشوف مباشرة للشبكة العامة، ولا حتى حماية لائقة، ألا ينتظر هذا أن يُضرب؟
وللأمانة، فإن الهجمات التي تواجهها التطبيقات الاجتماعية أكثر تعقيدًا بكثير مما نتصور، فواجهات واجهة برمجة التطبيقات معرضة لهجمات CC، والتسجيل الخبيث، وقصف الرسائل النصية القصيرة، وزحف المحتوى، وتواجه الموارد الثابتة مثل الصور ومقاطع الفيديو خطر سرقة السلسلة، والهجمات البطيئة، واستنفاد عرض النطاق الترددي. ببساطة الاعتماد ببساطة على مقاومة الخادم الصلبة هو ببساطة غير واقعي - بالإضافة إلى تكلفة الجهاز في السماء، لا تضيف تعطل تجربة الجهاز. لقد رأيت الكثير من الفرق التي تخطو على الاختيار الفني للحفرة، واشترت عنوان IP عالي الدفاع ولكن وجدت أن سرعة تحميل الصور مؤثرة، مع CDN عادي ولا يمكن منع طبقة API من الهجمات الدقيقة.
يجب أن يكون الحل الفعال حقًا هو الحوكمة متعددة الطبقات: يجب أن تكون حماية واجهة برمجة التطبيقات قوية بما يكفي لتحديد المستخدمين العاديين وحركة المرور الخبيثة؛ ويجب أن يكون تحميل الموارد سريعًا بما يكفي لضمان تجربة وصول عالمية. يجب أن يقترن هذا مع قدرة التنظيف الموزعة واستراتيجية الجدولة الذكية لشبكة CDN عالية الدفاع، بدلاً من مجرد شراء نطاق ترددي كبير لإنهاء المهمة. أدناه أنا جنبا إلى جنب مع تجربة الاختبار، أتحدث عن كيفية الهبوط.
لنبدأ بالمنطق الأساسي لحماية واجهة برمجة التطبيقات. لا تصدق دعاية “الحماية بنقرة واحدة”، فقد تطورت هجمات واجهة برمجة التطبيقات منذ فترة طويلة لمحاكاة سلوك الأشخاص الحقيقيين. لقد وجدتُ أنه من السهل الاعتماد فقط على تقييد تردد بروتوكول الإنترنت IP، خاصةً بالنسبة لشبكات الحرم الجامعي وشبكات المؤسسات التي تشترك في منافذ NAT. يكمن المفتاح في بناء صورة من أبعاد متعددة: خصائص توقيت الطلب، وبصمات الجهاز، وسلامة سلسلة مكالمات واجهة برمجة التطبيقات، وحتى معقولية منطق العمل.
على سبيل المثال، حماية واجهة تسجيل الدخول، بالإضافة إلى حد سرعة IP العادي، عليك إضافة تحقق ثانوي للتحقق البشري. عندما يبدأ نفس عنوان IP نفسه طلبات متعددة لتسجيل الدخول خلال فترة زمنية قصيرة، يتم تشغيل التحقق المنزلق أولاً؛ إذا استمر الأمر غير طبيعي، يتم طلب رمز التحقق عبر الرسائل النصية القصيرة. هذه المجموعة من التوليفات لأسفل، يمكن التخلص من هجوم التعطل 90%. فيما يلي التكوين الديناميكي للحد من التدفق الذي قمنا بتطبيقه في طبقة Nginx:
لكن مستوى Nginx يمكن أن يقوم فقط بالحماية الأساسية، والقواعد الأكثر تفصيلاً يجب أن تعتمد على WAF. توفر شبكة CDN السائدة في السوق عالية الدفاع وظيفة القواعد المخصصة، لقد قارنت بين CDN5 و CDN07 اثنين، فجوة مرونة الاستراتيجية كبيرة جدًا. يدعم محرك قواعد CDN5 امتداد البرنامج النصي Lua، ويمكنه إرساء بيانات التحكم في الرياح في الوقت الفعلي، مثل هذا التكوين:
إن تكوين القواعد في CDN07 ضعيف للغاية، على الرغم من أن الواجهة خيالية، إلا أن الطبقة السفلية لا تزال تعتمد على مجموعة قواعد WAF التقليدية، والتي هي في الأساس غير فعالة في مهاجمة منطق الأعمال. 08Host's وظيفة الحافة الجديدة الأخيرة هي نقطة مضيئة، والتي يمكن أن تقوم بتشغيل منطق JavaScript مباشرة في عقدة CDN لتحقيق التحكم في مخاطر الأعمال، على سبيل المثال، “إذا كان نفس المستخدم يتابع أكثر من 100 شخص في غضون 5 دقائق، فإنه يقوم تلقائيًا بتشغيل التحقق”. يتابع نفس المستخدم أكثر من 100 شخص خلال خمس دقائق، ثم يقوم تلقائيًا بتشغيل التحقق من هذا النوع من التحكم في مخاطر الأعمال.
حماية موارد الصور قصة أخرى. تؤثر سرعة تحميل الصور في التطبيقات الاجتماعية بشكل مباشر على معدل الاحتفاظ، ولكن من السهل أن تنخفض سرعة تحميل الصور في ظل حركة المرور الكثيفة. اقتراحي هو الفصل التام بين حركة المرور الديناميكية والثابتة: تذهب واجهات برمجة التطبيقات على خطوط دفاعية عالية، وتذهب الصور ومقاطع الفيديو على خطوط متسارعة. يحاول العديد من الأشخاص توفير المتاعب من خلال تسريع الموقع بأكمله، ونتيجة لذلك، يتم تخزين طلبات واجهة برمجة التطبيقات مؤقتًا، مما يؤدي إلى اختلال البيانات.
أفضل حل هو استخدام أسماء نطاقات مختلفة لتقسيم العمل: يشير موقع api.yourapp.com إلى شبكة CDN عالية الدفاع، ويشير موقع img.yourapp.com إلى شبكة CDN مسرعة نقية. بهذه الطريقة، لن تزاحم حركة مرور الهجوم النطاق الترددي للصور، ويمكن تحسين التكوين لسيناريوهات مختلفة. تذكّر تمكين سلسلة مكافحة السرقة ومصادقة الرمز المميز لنطاقات الصور، حتى لا يأخذ الناس بسهولة سرير صورتك كوجبة غداء مجانية:
يجب أيضًا تصميم استراتيجية التخزين المؤقت بعناية. يمكن تعيين وقت التخزين المؤقت للملفات الصغيرة مثل الصور الرمزية والرموز التعبيرية لفترة أطول (أكثر من 30 يومًا)، ويوصى بتخزين صور تدفق التغذية مؤقتًا وفقًا للتسلسل الهرمي لمستوى الحرارة: يتم تخزين المحتوى الساخن مؤقتًا إلى عقدة الحافة، ويتم جلب المحتوى البارد إلى المصدر. لقد اختبرت وظيفة التسخين المسبق للتخزين المؤقت الذكي على CDN5، ودفع المحتوى المتوقع انفجاره إلى عقد الحافة مسبقًا، وانخفض تأخير تحميل الصور بمقدار 401 تيرابايت في ساعات الذروة المسائية.
بيئة شبكة الهاتف المحمول معقدة، ولكن يجب أيضًا مراعاة تحسين البروتوكول. أداء بروتوكول HTTP/3 في بيئة الشبكة الضعيفة أفضل بكثير من HTTP/2، خاصة في معدل فقدان الحزمة المرتفع لشبكة 4G. ومع ذلك، في هذه المرحلة، تكون التكلفة الكاملة لفتح كويك المفتوح بالكامل مرتفعة، فمن المستحسن أن يكون اسم مجال الصورة الأولى لفتح HTTP/3 التجريبي، واسم مجال واجهة برمجة التطبيقات للحفاظ على بروتوكول TCP لضمان الموثوقية. 08تنفيذ HTTP/3 أكثر استقرارًا، ويدعم استرداد الاتصال 0-RTT، وسيناريوهات التبديل المتكرر للشبكة المتنقلة ودية للغاية.
لا يمكنك تخطي جزء المراقبة والتنبيه. لقد تم استدعائي ذات مرة في منتصف الليل للتعامل مع هجوم لأنني لم أقم بإعداد إنذار زيادة عرض النطاق الترددي. الآن سأقوم بتهيئة ثلاث طبقات من التنبيهات في خلفية CDN: إرسال تذكير عندما يتجاوز عرض النطاق الترددي 80%، وتشغيل التوسيع المرن تلقائيًا عندما يكون معدل سرعة الشبكة غير طبيعي، والاتصال مباشرة عندما يتجاوز معدل الخطأ 5xx 1%. يجب أن يوفر مزود خدمة CDN الموثوق به حقًا تقارير الهجوم في الوقت الفعلي، على سبيل المثال، تقوم وظيفة تحليل الهجوم في CDN07 بعمل جيد في عرض نوع الهجوم ومنطقة المصدر وعنوان IP الخاص بالهجوم بوضوح.
أخيرًا، كلمة عن التحكم في التكلفة. سعر CDN الدفاعي العالي CDN لديه الكثير من الماء، لا تشتري مباشرة وفقًا لعرض الموقع الرسمي. يمكن للكميات الكبيرة أن تذهب إلى سعر العقد، وعادة ما يتم تخفيضها إلى سعر خصم 5-7٪. إذا كانت حركة المرور صغيرة، فمن الأكثر فعالية من حيث التكلفة استخدام الفوترة على أساس الحجم، ولكن انتبه إلى انفجار الفاتورة الناجم عن حركة المرور المفاجئة. هناك طريقة خادعة: حركة مرور واجهة برمجة التطبيقات إلى حزمة الدفاع العالي والصور ومقاطع الفيديو للذهاب إلى حزمة حركة المرور الرخيصة (مثل حزمة حركة مرور وقت الخمول 08Host)، يمكن تخفيض التكلفة الإجمالية 60% أو أكثر.
بغض النظر عن مدى إتقان البرنامج التقني، فهو عديم الفائدة دون عمليات داعمة. يوصى بإنشاء نظام اختبار اختراق منتظم، مرة واحدة في الشهر على الأقل لإجراء فحص شامل للثغرات الأمنية. يجب أن تكون الميزات الجديدة متصلة بالإنترنت قبل المراجعة الأمنية، مع التركيز على التحقق من قوة الواجهة والتحكم في السلطة. يتم عزل البيئة المتصلة بالإنترنت بشكل صارم، ويُحظر نقل تكوين قاعدة بيانات الاختبار إلى بيئة الإنتاج - لقد رأيت هذا النوع من الأخطاء منخفضة المستوى ما لا يقل عن عشر مرات.
في النهاية، جوهر الحماية هو إيجاد توازن بين الخبرة والأمان. ختم صعب للغاية لقتل المستخدم الحقيقي، ووضع فضفاض للغاية وابتزاز استغلال الثغرات. أفضل طريقة هي إنشاء دفاع متعدد الطبقات: عقد الحافة للقيام بالتصفية ذات الحبيبات الخشنة، والعقدة المركزية للقيام بالتحكم الدقيق في الرياح، ثم دمجها مع بيانات العميل التي تم الإبلاغ عنها لتشكيل حلقة مغلقة. لا تتوقع حلاً من نقطة واحدة، فالأمن هو عملية مواجهة مستمرة.
بعد العديد من التحقق من المعركة، أستخدم الآن مجموعة من البرامج: حماية واجهة برمجة التطبيقات مع CDN5 + بوابة التحكم في الرياح ذاتية البحث، وتسريع الصورة مع شبكة الجدولة الذكية 08Host، والبيانات المهمة ثم تعيين طبقة من الإرسال المشفر الخاص. هذه المجموعة من الهندسة المعمارية لتحمل الحياة اليومية لعشرة ملايين ضغط تطبيق اجتماعي، ومعدل اعتراض هجوم واجهة برمجة التطبيقات 98% أو أكثر، والتحكم في وقت تحميل الصورة P90 في غضون 800 مللي ثانية. المفتاح يمكن التحكم في التكلفة، وليس لأن الحماية تحتاج إلى جعل البنية معقدة للغاية.
إن الحديث على الورق دائمًا ما يكون سطحيًا، فالكلام على الورق دائمًا ما يكون سطحيًا، فنحن نريد حقًا منع الهجمات ولكننا نحتاج أيضًا إلى الاستمرار في التكرار. يوصى بإجراء تدريبات ربع سنوية للهجوم والدفاع لمحاكاة سيناريوهات هجوم حقيقية لاختبار نظام الحماية. واجه تقنيات الهجوم الجديدة وقم بتحديث القواعد في الوقت المناسب، ولا تنتظر المشاكل قبل معالجتها. تذكّر: لا يوجد نظام حماية مطلق، بل التطور المستمر لاستراتيجية الدفاع فقط.

