مشاركة عبر


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

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

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

  • Implementation
  • Verification

Implementation

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

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

قبل إيداع التعليمات البرمجية، قم بإجراء مراجعات التعليمات البرمجية لزيادة الجودة الإجمالية للتعليمات البرمجية وتقليل مخاطر إنشاء الأخطاء. You can use Visual Studio to manage the code review process.

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

يتم إجراء تحليل التعليمات البرمجية الثابتة (المعروف أيضا باسم تحليل التعليمات البرمجية المصدر) كجزء من مراجعة التعليمات البرمجية. يشير تحليل التعليمات البرمجية الثابتة عادة إلى تشغيل أدوات تحليل التعليمات البرمجية الثابتة للعثور على الثغرات الأمنية المحتملة في التعليمات البرمجية غير المقتطاعة. Static code analysis uses techniques like taint checking and data flow analysis.

Azure Marketplace offers developer tools that perform static code analysis and assist with code reviews.

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

تعامل مع جميع الإدخالات على أنها غير موثوق بها لحماية التطبيق الخاص بك من الثغرات الأمنية لتطبيق الويب الأكثر شيوعا. البيانات غير الموثوق بها هي وسيلة لهجمات الحقن. يتضمن إدخال التطبيق معلمات في عنوان URL، وإدخال من المستخدم، وبيانات من قاعدة البيانات أو من واجهة برمجة تطبيقات، وأي شيء يتم تمريره يمكن للمستخدم معالجته. An application should validate that data is syntactically and semantically valid before the application uses the data in any way (including displaying it back to the user).

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

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

  • تحاول قائمة الحظر التحقق من أن إدخال مستخدم معين لا يحتوي على محتوى "معروف بأنه ضار".

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

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

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

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

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

يجب دائما ترميز أي إخراج تقدمه إما بصريا أو داخل مستند وإلغاءه. Escaping, also known as output encoding, is used to help ensure that untrusted data isn't a vehicle for an injection attack. يوفر الهروب، جنبا إلى جنب مع التحقق من صحة البيانات، دفاعات ذات طبقات لزيادة أمان النظام ككل.

Escaping makes sure that everything is displayed as output. Escaping also lets the interpreter know that the data isn't intended to be executed, and this prevents attacks from working. This is another common attack technique called cross-site scripting (XSS).

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

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

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

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

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

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

فصل بيانات الإنتاج

لا ينبغي استخدام بيانات الإنتاج الخاصة بك، أو البيانات "الحقيقية"، للتطوير أو الاختبار أو أي غرض آخر غير المقصود من العمل. A masked (anonymized) dataset should be used for all development and testing.

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

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

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

يساعدك معرف Microsoft Entra الخارجي في المستأجرين الخارجيين في إدارة كلمة المرور، من خلال توفير إعادة تعيين كلمة مرور الخدمة الذاتية والمزيد.

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

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

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

If your application allows file uploads, consider precautions that you can take for this risky activity. الخطوة الأولى في العديد من الهجمات هي الحصول على بعض التعليمات البرمجية الضارة في نظام يتعرض للهجوم. يساعد استخدام تحميل ملف المهاجم على إنجاز ذلك. يقدم OWASP حلولا للتحقق من صحة ملف للتأكد من أن الملف الذي تقوم بتحميله آمن.

تساعد الحماية من البرامج الضارة على تحديد الفيروسات وبرامج التجسس والبرامج الضارة الأخرى وإزالتها. You can install Microsoft Antimalware or a Microsoft partner's endpoint protection solution (Trend Micro, Broadcom, McAfee, Microsoft Defender Antivirus in Windows, and Endpoint Protection).

Microsoft Antimalware includes features like real-time protection, scheduled scanning, malware remediation, signature updates, engine updates, samples reporting, and exclusion event collection. يمكنك تكامل Microsoft Antimalware وحلول الشركاء مع Microsoft Defender for Cloud لتسهيل النشر والكشف المضمن (التنبيهات والحوادث).

عدم تخزين المحتوى الحساس مؤقتا

لا تقم بالتخزين المؤقت للمحتوى الحساس على المستعرض. يمكن للمستعرضات تخزين المعلومات للتخزين المؤقت والمحفوظات. يتم تخزين الملفات المخزنة مؤقتا في مجلد مثل مجلد ملفات الإنترنت المؤقتة، في حالة Internet Explorer. عند الإشارة إلى هذه الصفحات مرة أخرى، يعرض المستعرض الصفحات من ذاكرة التخزين المؤقت الخاصة به. If sensitive information (address, credit card details, Social security number, username) is displayed to the user, the information might be stored in the browser's cache and be retrievable by examining the browser's cache or by pressing the browser's Back button.

Verification

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

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

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

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

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

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

Perform DAST, preferably with the assistance of a security professional (a penetration tester or vulnerability assessor). إذا لم يكن أحد محترفي الأمان متوفرا، فيمكنك إجراء DAST بنفسك باستخدام ماسح ضوئي لوكيل الويب وبعض التدريب. قم بتوصيل ماسح DAST الضوئي مبكرا للتأكد من عدم إدخال مشكلات أمان واضحة في التعليمات البرمجية الخاصة بك. See the OWASP site for a list of web application vulnerability scanners.

إجراء اختبار الزغب

In fuzz testing, you induce program failure by deliberately introducing malformed or random data to an application. يساعد تحريض فشل البرنامج على الكشف عن مشكلات الأمان المحتملة قبل إصدار التطبيق.

Security Risk Detection هي خدمة اختبار غامض فريدة من نوعها من Microsoft للعثور على الأخطاء الحرجة للأمان في البرامج.

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

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

يمكنك إنشاء صورة لسطح الهجوم عن طريق مسح التطبيق ضوئيا. تقدم Microsoft أداة تحليل سطح الهجوم تسمى محلل سطح الهجوم. يمكنك الاختيار من بين العديد من أدوات أو خدمات الاختبار الديناميكي التجاري ومسح الثغرات الأمنية، بما في ذلك OWASP Attack Surface Detector و Arachniوw3af. تتبع أدوات الفحص هذه في تطبيقك وتعيين أجزاء التطبيق التي يمكن الوصول إليها عبر الويب. You can also search the Azure Marketplace for similar developer tools.

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

يعد التأكد من أن تطبيقك آمنا بنفس أهمية اختبار أي وظائف أخرى. Make penetration testing a standard part of the build and deployment process. قم بجدولة اختبارات الأمان المنتظمة ومسح الثغرات الأمنية على التطبيقات التي تم توزيعها، وراقب المنافذ المفتوحة ونقاط النهاية والهجمات.

تشغيل اختبارات التحقق من الأمان

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

Next steps

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