تطوير تطبيقات آمنة على Azure

في هذه المقالة، نعرض أنشطة الأمان وعناصر التحكم التي تجب مراعاتها عند تطوير تطبيقات السحابة. ويتم تناول أسئلة ومفاهيم الأمان التي تجب مراعاتها أثناء مراحل التنفيذ والتحقق من دورة حياة تطوير الأمان (SDL) من Microsoft. والهدف من ذلك هو مساعدتك في تحديد الأنشطة وخدمات Azure التي يمكنك استخدامها لتطوير تطبيق أكثر أماناً.

يتم تناول المراحل التالية لدورة تطوير الأمان من Microsoft في هذه المقالة:

  • التنفيذ
  • التحقق من الصحة

التنفيذ

ينصب التركيز في مرحلة التنفيذ على إنشاء أفضل الممارسات للوقاية المبكرة واكتشاف المشكلات الأمنية وإزالتها من التعليمات البرمجية. افترض أن التطبيق الخاص بك يستخدم بطرق لم تكن تنوي استخدامها. يساعدك هذا في الحماية من سوء الاستخدام العرضي أو المتعمد لتطبيقك.

مراجعة التعليمات البرمجية

قبل التحقق من التعليمة البرمجية، قم باستعراض التعليمات البرمجية لزيادة جودة التعليمة البرمجية بشكل عام وتقليل مخاطر إحداث أخطاء. يمكنك استخدام Visual Studio لإدارة عملية مراجعة التعليمات البرمجية.

إجراء تحليل التعليمات البرمجية الثابت

يتم إجراء تحليل التعليمات البرمجية الثابتة (المعروف أيضا باسم تحليل التعليمات البرمجية المصدر) كجزء من مراجعة التعليمات البرمجية. يشير تحليل التعليمات البرمجية الثابتة عادة إلى تشغيل أدوات تحليل التعليمات البرمجية الثابتة للعثور على الثغرات الأمنية المحتملة في التعليمات البرمجية غير المقتطاعة. يستخدم تحليل التعليمات البرمجية الثابتة تقنيات مثل التحقق من العيوبوتحليل تدفق البيانات.

يقدم Azure Marketplace أدوات المطورين التي تقوم بإجراء تحليل التعليمات البرمجية الثابت وتساعد في مراجعة التعليمات البرمجية.

التحقق من صحة كل إدخال للتطبيق الخاص بك وتصحيحه

تعامل مع جميع المدخلات على أنها غير موثوقة لحماية تطبيقك من نقاط ضعف تطبيقات الويب الأكثر شيوعاً. تعتبر البيانات غير الموثوق بها وسيلة لهجمات الحقن. يتضمن الإدخال الخاص بتطبيقك معلمات في عنوان URL، وإدخال من المستخدم، وبيانات من قاعدة البيانات أو من واجهة برمجة التطبيقات، وأي شيء يتم تمريره يمكن للمستخدم معالجته. يتعين على التطبيق التحقق من صحة البيانات من الناحية التركيبية والدلالية قبل أن يستخدم التطبيق البيانات بأي طريقة (بما في ذلك عرضها مرة أخرى للمستخدم).

تحقق من صحة الإدخال في وقت مبكر في تدفق البيانات للتأكد من أن البيانات التي تم تكوينها بشكل صحيح فقط هي التي تدخل سير العمل. أنت لا تريد أن تستمر البيانات المُصاغة بشكل غير صحيح في قاعدة البيانات الخاصة بك أو تؤدي إلى حدوث خلل في أحد مكونات الاتجاه الهابط.

إن قائمة الحظر والسماح هما طريقتان عامتان لإجراء التحقق من صحة بناء جملة الإدخال:

  • يجب دائماً ترميز أي إخراج تقدمه إما بشكل مرئي أو داخل مستند.

  • تحاول قائمة السماح التحقق من أن إدخال مستخدم معين يطابق مجموعة من المدخلات "الجيدة المعروفة". قائمة السماح القائمة على الأحرف هي شكل من أشكال السماح حيث يتحقق التطبيق من أن إدخال المستخدم يحتوي فقط على أحرف "جيدة معروفة" أو أن الإدخال يطابق تنسيقاً معروفاً.

    على سبيل المثال، قد يتضمن ذلك التحقق من احتواء اسم المستخدم على أحرف أبجدية رقمية فقط أو أنه يحتوي على رقمين بالضبط.

قائمة السماح هي الأسلوب المفضل لإنشاء برمجيات آمنة. قائمة الحظر تكون عرضة للخطأ لأنه من المستحيل التفكير في قائمة كاملة من المدخلات السيئة المحتملة.

قم بإجراء هذا العمل على الخادم، وليس من جانب العميل (أو على الخادم ومن جانب العميل).

التحقق من مخرجات التطبيق الخاص بك

يجب دائماً ترميز أي إخراج تقدمه إما بشكل مرئي أو داخل مستند. Escaping، المعروف أيضاً باسم ترميز الإخراج، يُستخدم للمساعدة في ضمان أن البيانات غير الموثوق بها ليست وسيلة لهجوم الحقن. يوفر Escaping، جنباً إلى جنب مع التحقق من صحة البيانات، دفاعات متعددة الطبقات لزيادة أمان النظام ككل.

يتأكد Escaping من عرض كل شيء على أنه إخراج. وكما يتيح Escaping للمترجم الفوري معرفة أن البيانات ليس الغرض منها التنفيذ، وهذا يمنع عمل الهجمات. هذا أسلوب هجوم شائع آخر يسمى البرمجة النصية عبر المواقع (XSS).

إذا كنت تستخدم إطار عمل ويب من جهة خارجية، يمكنك التحقق من خيارات ترميز الإخراج على مواقع الويب باستخدام ورقة المعلومات المرجعية لمنع OWASP XSS.

استخدام الاستعلامات ذات المعلمات عند الاتصال بقاعدة البيانات

تجنب إطلاقاً إنشاء استعلام قاعدة بيانات مضمنة "سريعاً" في التعليمات البرمجية الخاصة بك وإرسالها مباشرةً إلى قاعدة البيانات. من المحتمل أن تتسبب التعليمات البرمجية الضارة التي تم إدراجها في تطبيقك في سرقة قاعدة البيانات الخاصة بك أو مسحها أو تعديلها. يمكن أيضاً استخدام التطبيق الخاص بك لتشغيل أوامر نظام تشغيل ضارة على نظام التشغيل الذي يستضيف قاعدة البيانات الخاصة بك.

استخدم الاستعلامات ذات المعلمات أو الإجراءات المخزنة بدلاً من ذلك. عند استخدام الاستعلامات ذات المعلمات، يمكنك استدعاء الإجراء من التعليمات البرمجية الخاصة بك بأمان وتمريرها بسلسلة دون القلق من أن يتم التعامل معها كجزء من عبارة الاستعلام.

إزالة رؤوس الخادم القياسية

تكشف الرؤوس مثل Server وX-Powered-By وX-AspNet-Version عن معلومات حول الخادم والتقنيات الأساسية. نوصي بإلغاء هذه الرؤوس لتجنب تسجيل بصمات الأصابع للتطبيق. راجع إزالة رؤوس الخادم القياسية على مواقع الويب في Azure.

فصل بيانات الإنتاج الخاصة بك

لا ينبغي استخدام بيانات الإنتاج أو البيانات "الحقيقية" للتطوير أو الاختبار أو أي غرض آخر غير المقصود من العمل. يجب استخدام مجموعة بيانات مقنعة (مجهولة المصدر) لجميع عمليات التطوير والاختبار.

هذا يعني أن عدداً أقل من الأشخاص يمكنهم الوصول إلى بياناتك الحقيقية، ما يقلل من سطح هجومك. وهذا يعني أيضاً أن عدداً أقل من الموظفين يرون البيانات الشخصية، ما يقضي على أي انتهاك محتمل للسرية.

تنفيذ نهج كلمة المرور القوي

للدفاع ضد القوة الغاشمة والتخمين المستند إلى القاموس، يجب عليك تنفيذ سياسة كلمة مرور قوية لضمان قيام المستخدمين بإنشاء كلمة مرور معقدة (على سبيل المثال، 12 حرفاً كحد أدنى للطول وتتطلب أحرفاً أبجدية رقمية وأحرفاً خاصة).

تساعدك متاجرة عمل-المستهلك في Microsoft Azure Active Directory في إدارة كلمة المرور، من خلال توفير إعادة تعيين كلمة مرور الخدمة الذاتية وفرض إعادة تعيين كلمة المرور والمزيد.

للدفاع ضد الهجمات على الحسابات الافتراضية، تحقق من أن جميع المفاتيح وكلمات المرور قابلة للاستبدال وأنه تم إنشاؤها أو استبدالها بعد تثبيت الموارد.

إذا كان يتعين على التطبيق إنشاء كلمات المرور تلقائياً، فتأكد من أن كلمات المرور التي تم إنشاؤها تكون عشوائية وأن بها نسبة عالية من الإنتروبيا.

التحقق من صحة تحميل الملف

إذا كان تطبيقك يسمح بتحميل الملفات، ففكر في الاحتياطات التي يمكنك اتخاذها حيال هذا النشاط المحفوف بالمخاطر. تتمثل الخطوة الأولى في العديد من الهجمات في إدخال بعض التعليمات البرمجية الضارة إلى نظام يتعرض للهجوم. يساعد استخدام تحميل الملف المهاجم في تحقيق ذلك. يقدم مشروع أمان تطبيق الويب المفتوح (OWASP) حلولاً للتحقق من صحة الملفات للتأكد من أن الملف الذي تحمّله آمن.

تساعد الحماية من البرامج الضارة في التعرُّف على الفيروسات وبرامج التجسس والبرامج الضارة الأخرى وإزالتها. يمكنك تثبيت Microsoft Antimalware أو حل حماية نقطة النهاية لشريك Microsoft (Trend Micro و Broadcom و McAfeeو Microsoft Defender Antivirus في Windows و Endpoint Protection).

يتضمن Microsoft Antimalware ميزات مثل الحماية في الوقت الحقيقي، والمسح المجدول، ومعالجة البرامج الضارة، وتحديثات التوقيع، وتحديثات المحرك، وإعداد تقارير العينات، وجمع أحداث الاستبعاد. يمكنك تكامل Microsoft Antimalware وحلول الشركاء مع Microsoft Defender for Cloud لتسهيل النشر والكشف المضمن (التنبيهات والحوادث).

عدم تخزين المحتوى الحساس في ذاكرة التخزين المؤقت

تجنب تخزين المحتوى الحساس مؤقتاً على المستعرض. يمكن للمستعرضات تخزين المعلومات للتخزين المؤقت والمحفوظات. يتم تخزين الملفات المخزنة مؤقتاً في مجلد مثل مجلد ملفات الإنترنت المؤقتة، في حالة Internet Explorer. عند الإشارة إلى هذه الصفحات مرة أخرى، يعرض المستعرض الصفحات من ذاكرة التخزين المؤقت به. إذا تم عرض معلومات حساسة (العنوان وتفاصيل بطاقة الائتمان ورقم الضمان الاجتماعي واسم المستخدم) للمستخدم، فقد يتم تخزين المعلومات في ذاكرة التخزين المؤقت للمستعرض ويمكن استردادها عن طريق فحص ذاكرة التخزين المؤقت للمستعرض أو عن طريق الضغط على الزر رجوع للمستعرض.

التحقق من الصحة

تتضمن مرحلة التحقق جهداً شاملاً لضمان توافق الكود مع مبادئ الأمان والخصوصية التي تم وضعها في المراحل السابقة.

البحث عن الثغرات الأمنية وإصلاحها في تبعيات التطبيق الخاص بك

تقوم بمسح التطبيق الخاص بك والمكتبات التابعة له لتحديد أي مكونات تكون عرضة للإصابة بهجمات الفيروسات. تتضمن المنتجات المتوفرة لإجراء هذا الفحص فحص تبعية OWASPوSnyk وBlack Duck.

اختبار التطبيق الخاص بك في حالة التشغيل

اختبار أمان التطبيق الديناميكي (DAST) هو عملية اختبار لتطبيق في حالة التشغيل لكشف الثغرات الأمنية. تحلل أدوات DAST البرامج أثناء تنفيذها للعثور على الثغرات الأمنية مثل تلف الذاكرة وتكوين الخادم غير الآمن والبرمجة النصية عبر المواقع ومشكلات امتيازات المستخدم وحقن SQL والمخاوف الأمنية الهامة الأخرى.

يختلف DAST عن اختبار أمان التطبيق الثابت (SAST). تحلل أدوات SAST التعليمات البرمجية المصدر أو الإصدارات المحولة برمجيا من التعليمات البرمجية عندما لا يتم تنفيذ التعليمات البرمجية من أجل العثور على عيوب أمنية.

قم بإجراء اختبار أمان التطبيق الديناميكي (DAST)، ويفضل أن يكون ذلك بمساعدة متخصص أمني (مختبِر اختراق أو مقيِّم الثغرات الأمنية). في حالة عدم توفر متخصص أمني، يمكنك إجراء اختبار أمان التطبيق الديناميكي (DAST) بنفسك باستخدام ماسح وكيل الويب وبعض التدريب. قم بتوصيل ماسح ضوئي في اختبار أمان التطبيق الديناميكي (DAST) مبكراً للتأكد من عدم إدخال مشكلات أمان واضحة في التعليمات البرمجية الخاصة بك. راجع موقع OWASP للحصول على قائمة بالماسحات الضوئية للثغرات الأمنية في تطبيقات الويب.

إجراء اختبار عشوائي

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

Security Risk Detection هي خدمة اختبار عشوائية فريدة من نوعها من Microsoft لكشف الأخطاء الحرجة المتعلقة بالأمان في البرامج.

إجراء استعراض سطح الهجوم

يساعد استعراض سطح الهجوم بعد إكمال التعليمات البرمجية على ضمان النظر في أي تغييرات في التصميم أو التنفيذ على تطبيق أو نظام. حيث يساعد في ضمان مراجعة أي موجهات هجوم جديدة تم إنشاؤها نتيجة للتغييرات، بما في ذلك نماذج التهديد، والتخفيف من حدتها.

يمكنك إنشاء صورة لسطح الهجوم عن طريق مسح التطبيق. تقدم Microsoft أداة تحليل سطح الهجوم تسمى Attack Surface Analyzer. يمكنك الاختيار من بين العديد من أدوات أو خدمات الاختبار الديناميكي التجاري ومسح الثغرات الأمنية، بما في ذلك OWASP Attack Surface Detector و Arachniوw3af. تقوم أدوات الفحص هذه بالزحف إلى تطبيقك وتعيين أجزاء التطبيق التي يمكن الوصول إليها عبر الويب. يمكنك أيضا البحث في Azure Marketplace عن أدوات مطورين مماثلة.

إجراء اختبار اختراق الأمان

إن التأكد من أن تطبيقك آمن لا يقل أهمية عن اختبار أي وظيفة أخرى. اجعل اختبار الاختراق جزءاً قياسياً من عملية الإنشاء والتوزيع. قم بجدولة اختبارات الأمان المنتظمة ومسح الثغرات الأمنية على التطبيقات التي تم توزيعها، وراقب المنافذ المفتوحة ونقاط النهاية والهجمات.

إجراء اختبارات التحقق من الأمان

يحتوي حل أمان مستأجر Azure (AzTS) من حزمة DevOps الآمنة ل Azure (AzSK) على SVTs لخدمات متعددة من النظام الأساسي ل Azure. يمكنك تشغيل اختبارات التحقق من الأمان بشكل دوري للتأكد من أن اشتراك Azure والموارد المختلفة التي يتألف منها تطبيقك في حالة آمنة. يمكنك أيضاً أتمتة هذه الاختبارات باستخدام ميزة ملحقات التكامل المستمر/ النشر المستمر (التكامل المستمر والتوزيع المستمر) لـ AzSK، ما يجعل اختبارات التحقق من الأمان متاحة كملحق Visual Studio.

الخطوات التالية

في المقالات التالية، نوصي بعناصر تحكم الأمان وأنشطة الأمان التي يمكن أن تساعدك في تصميم التطبيقات الآمنة ونشرها.